Feat: Complete tags property #10
@ -754,7 +754,14 @@ class Headline:
|
||||
@property
|
||||
def tags(self) -> list[str]:
|
||||
parent_tags = self.parent.tags
|
||||
if self.doc.environment.get('org-tags-exclude-from-inheritance'):
|
||||
if self.doc.environment.get('org-use-tag-inheritance'):
|
||||
accepted_tags = []
|
||||
for tag in self.doc.environment.get('org-use-tag-inheritance'):
|
||||
if tag in parent_tags:
|
||||
accepted_tags.append(tag)
|
||||
parent_tags = accepted_tags
|
||||
|
||||
elif self.doc.environment.get('org-tags-exclude-from-inheritance'):
|
||||
for tag in self.doc.environment.get('org-tags-exclude-from-inheritance'):
|
||||
if tag in parent_tags:
|
||||
parent_tags.remove(tag)
|
||||
|
@ -910,7 +910,7 @@ class TestSerde(unittest.TestCase):
|
||||
with open(os.path.join(DIR, "13-tags.org")) as f:
|
||||
orig = f.read()
|
||||
doc = loads(orig, {
|
||||
'org-tags-exclude-from-inheritance': ('h1tag', 'otherh2tag')
|
||||
'org-tags-exclude-from-inheritance': ('h1tag', 'otherh2tag'),
|
||||
})
|
||||
|
||||
self.assertEqual(doc.tags, ['filetag'])
|
||||
@ -925,6 +925,26 @@ class TestSerde(unittest.TestCase):
|
||||
h1_2_h2 = h1_2.children[0]
|
||||
self.assertEqual(sorted(h1_2_h2.tags), ['filetag', 'otherh1tag', 'otherh2tag'])
|
||||
|
||||
def test_select_tags_to_inheritance_property_read_13(self):
|
||||
with open(os.path.join(DIR, "13-tags.org")) as f:
|
||||
orig = f.read()
|
||||
doc = loads(orig, {
|
||||
'org-tags-exclude-from-inheritance': ('h1tag', 'otherh2tag'),
|
||||
'org-use-tag-inheritance': ('h1tag',),
|
||||
})
|
||||
|
||||
self.assertEqual(doc.tags, ['filetag'])
|
||||
|
||||
h1_1, h1_2 = doc.getTopHeadlines()
|
||||
self.assertEqual(sorted(h1_1.tags), ['h1tag'])
|
||||
self.assertEqual(sorted(h1_2.tags), ['otherh1tag'])
|
||||
|
||||
h1_1_h2 = h1_1.children[0]
|
||||
self.assertEqual(sorted(h1_1_h2.tags), ['h1tag', 'h2tag'])
|
||||
|
||||
h1_2_h2 = h1_2.children[0]
|
||||
self.assertEqual(sorted(h1_2_h2.tags), ['otherh2tag'])
|
||||
|
||||
def print_tree(tree, indentation=0, headline=None):
|
||||
for element in tree:
|
||||
print(" " * indentation * 2, "EL:", element)
|
||||
|
Loading…
Reference in New Issue
Block a user