Make OrgNode tags stable sorted to find new entries for incremental updates

- Having Tags as sets was returning them in a different order
  everytime
- This resulted in spuriously identifying existing entries as new
  because their tags ordering changed
- Converting tags to list fixes the issue and identifies updated new
  entries for incremental update correctly
This commit is contained in:
Debanjum Singh Solanky
2022-09-07 01:38:30 +03:00
parent 2f7a6af56a
commit b9a6e80629
2 changed files with 10 additions and 10 deletions

View File

@@ -64,7 +64,7 @@ def makelist(filename):
level = 0
heading = ""
bodytext = ""
tags = set() # set of all tags in headline
tags = list() # set of all tags in headline
closed_date = ''
sched_date = ''
deadline_date = ''
@@ -98,14 +98,14 @@ def makelist(filename):
level = hdng.group(1)
heading = hdng.group(2)
bodytext = ""
tags = set() # set of all tags in headline
tags = list() # set of all tags in headline
tagsrch = re.search(r'(.*?)\s*:([a-zA-Z0-9].*?):$',heading)
if tagsrch:
heading = tagsrch.group(1)
parsedtags = tagsrch.group(2)
if parsedtags:
for parsedtag in parsedtags.split(':'):
if parsedtag != '': tags.add(parsedtag)
if parsedtag != '': tags.append(parsedtag)
else: # we are processing a non-heading line
if line[:10] == '#+SEQ_TODO':
kwlist = re.findall(r'([A-Z]+)\(', line)
@@ -217,7 +217,7 @@ class Orgnode(object):
self.level = len(level)
self.headline = headline
self.body = body
self.tags = set(tags) # All tags in the headline
self.tags = tags # All tags in the headline
self.todo = ""
self.prty = "" # empty of A, B or C
self.scheduled = "" # Scheduled date
@@ -270,8 +270,8 @@ class Orgnode(object):
def Tags(self):
"""
Returns the set of all tags
For example, :HOME:COMPUTER: would return {'HOME', 'COMPUTER'}
Returns the list of all tags
For example, :HOME:COMPUTER: would return ['HOME', 'COMPUTER']
"""
return self.tags
@@ -287,7 +287,7 @@ class Orgnode(object):
"""
Store all the tags found in the headline.
"""
self.tags = set(newtags)
self.tags = newtags
def Todo(self):
"""