Compare commits

...

2 Commits

Author SHA1 Message Date
Sergio Martínez Portela
852f472374 Implement OrgDoc .shallow_tags .
Some checks failed
Testing / pytest (push) Successful in 27s
Testing / mypy (push) Successful in 32s
Testing / style-formatting (push) Failing after 42s
Testing / style-sorted-imports (push) Successful in 28s
Testing / stability-extra-test (push) Successful in 28s
2024-09-01 23:37:26 +02:00
Sergio Martínez Portela
570e6bb764 Implement OrgDoc .tags. 2024-09-01 23:35:33 +02:00
2 changed files with 29 additions and 4 deletions

View File

@ -753,10 +753,7 @@ class Headline:
@property @property
def tags(self): def tags(self):
if isinstance(self.parent, OrgDoc): return list(self.shallow_tags) + self.parent.tags
return list(self.shallow_tags)
else:
return list(self.shallow_tags) + self.parent.tags
def add_tag(self, tag: str): def add_tag(self, tag: str):
self.shallow_tags.append(tag) self.shallow_tags.append(tag)
@ -2280,6 +2277,17 @@ class OrgDoc:
def path(self): def path(self):
return self._path return self._path
@property
def tags(self) -> list[str]:
for kw in self.keywords:
if kw.key == "FILETAGS":
return kw.value.strip(':').split(':')
return []
@property
def shallow_tags(self) -> list[str]:
return self.tags
## Querying ## Querying
def get_links(self): def get_links(self):
for headline in self.headlines: for headline in self.headlines:

View File

@ -889,6 +889,23 @@ class TestSerde(unittest.TestCase):
h1_2_h2 = h1_2.children[0] h1_2_h2 = h1_2.children[0]
self.assertEqual(sorted(h1_2_h2.tags), ['filetag', 'otherh1tag', 'otherh2tag']) self.assertEqual(sorted(h1_2_h2.tags), ['filetag', 'otherh1tag', 'otherh2tag'])
def test_shallow_tag_property_read_13(self):
with open(os.path.join(DIR, "13-tags.org")) as f:
orig = f.read()
doc = loads(orig)
self.assertEqual(doc.shallow_tags, ['filetag'])
h1_1, h1_2 = doc.getTopHeadlines()
self.assertEqual(sorted(h1_1.shallow_tags), ['h1tag'])
self.assertEqual(sorted(h1_2.shallow_tags), ['otherh1tag'])
h1_1_h2 = h1_1.children[0]
self.assertEqual(sorted(h1_1_h2.shallow_tags), ['h2tag'])
h1_2_h2 = h1_2.children[0]
self.assertEqual(sorted(h1_2_h2.shallow_tags), ['otherh2tag'])
def print_tree(tree, indentation=0, headline=None): def print_tree(tree, indentation=0, headline=None):
for element in tree: for element in tree:
print(" " * indentation * 2, "EL:", element) print(" " * indentation * 2, "EL:", element)