Feat: Complete tags property #10
@ -754,15 +754,15 @@ class Headline:
|
|||||||
@property
|
@property
|
||||||
def tags(self) -> list[str]:
|
def tags(self) -> list[str]:
|
||||||
parent_tags = self.parent.tags
|
parent_tags = self.parent.tags
|
||||||
if self.doc.environment.get('org-use-tag-inheritance'):
|
if self.doc.environment.get("org-use-tag-inheritance"):
|
||||||
accepted_tags = []
|
accepted_tags = []
|
||||||
for tag in self.doc.environment.get('org-use-tag-inheritance'):
|
for tag in self.doc.environment.get("org-use-tag-inheritance"):
|
||||||
if tag in parent_tags:
|
if tag in parent_tags:
|
||||||
accepted_tags.append(tag)
|
accepted_tags.append(tag)
|
||||||
parent_tags = accepted_tags
|
parent_tags = accepted_tags
|
||||||
|
|
||||||
elif self.doc.environment.get('org-tags-exclude-from-inheritance'):
|
elif self.doc.environment.get("org-tags-exclude-from-inheritance"):
|
||||||
for tag in 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:
|
if tag in parent_tags:
|
||||||
parent_tags.remove(tag)
|
parent_tags.remove(tag)
|
||||||
return list(self.shallow_tags) + parent_tags
|
return list(self.shallow_tags) + parent_tags
|
||||||
@ -2294,7 +2294,7 @@ class OrgDoc:
|
|||||||
def tags(self) -> list[str]:
|
def tags(self) -> list[str]:
|
||||||
for kw in self.keywords:
|
for kw in self.keywords:
|
||||||
if kw.key == "FILETAGS":
|
if kw.key == "FILETAGS":
|
||||||
return kw.value.strip(':').split(':')
|
return kw.value.strip(":").split(":")
|
||||||
return []
|
return []
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
@ -877,73 +877,80 @@ class TestSerde(unittest.TestCase):
|
|||||||
orig = f.read()
|
orig = f.read()
|
||||||
doc = loads(orig)
|
doc = loads(orig)
|
||||||
|
|
||||||
self.assertEqual(doc.tags, ['filetag'])
|
self.assertEqual(doc.tags, ["filetag"])
|
||||||
|
|
||||||
h1_1, h1_2 = doc.getTopHeadlines()
|
h1_1, h1_2 = doc.getTopHeadlines()
|
||||||
self.assertEqual(sorted(h1_1.tags), ['filetag', 'h1tag'])
|
self.assertEqual(sorted(h1_1.tags), ["filetag", "h1tag"])
|
||||||
self.assertEqual(sorted(h1_2.tags), ['filetag', 'otherh1tag'])
|
self.assertEqual(sorted(h1_2.tags), ["filetag", "otherh1tag"])
|
||||||
|
|
||||||
h1_1_h2 = h1_1.children[0]
|
h1_1_h2 = h1_1.children[0]
|
||||||
self.assertEqual(sorted(h1_1_h2.tags), ['filetag', 'h1tag', 'h2tag'])
|
self.assertEqual(sorted(h1_1_h2.tags), ["filetag", "h1tag", "h2tag"])
|
||||||
|
|
||||||
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):
|
def test_shallow_tag_property_read_13(self):
|
||||||
with open(os.path.join(DIR, "13-tags.org")) as f:
|
with open(os.path.join(DIR, "13-tags.org")) as f:
|
||||||
orig = f.read()
|
orig = f.read()
|
||||||
doc = loads(orig)
|
doc = loads(orig)
|
||||||
|
|
||||||
self.assertEqual(doc.shallow_tags, ['filetag'])
|
self.assertEqual(doc.shallow_tags, ["filetag"])
|
||||||
|
|
||||||
h1_1, h1_2 = doc.getTopHeadlines()
|
h1_1, h1_2 = doc.getTopHeadlines()
|
||||||
self.assertEqual(sorted(h1_1.shallow_tags), ['h1tag'])
|
self.assertEqual(sorted(h1_1.shallow_tags), ["h1tag"])
|
||||||
self.assertEqual(sorted(h1_2.shallow_tags), ['otherh1tag'])
|
self.assertEqual(sorted(h1_2.shallow_tags), ["otherh1tag"])
|
||||||
|
|
||||||
h1_1_h2 = h1_1.children[0]
|
h1_1_h2 = h1_1.children[0]
|
||||||
self.assertEqual(sorted(h1_1_h2.shallow_tags), ['h2tag'])
|
self.assertEqual(sorted(h1_1_h2.shallow_tags), ["h2tag"])
|
||||||
|
|
||||||
h1_2_h2 = h1_2.children[0]
|
h1_2_h2 = h1_2.children[0]
|
||||||
self.assertEqual(sorted(h1_2_h2.shallow_tags), ['otherh2tag'])
|
self.assertEqual(sorted(h1_2_h2.shallow_tags), ["otherh2tag"])
|
||||||
|
|
||||||
def test_exclude_tags_from_inheritance_property_read_13(self):
|
def test_exclude_tags_from_inheritance_property_read_13(self):
|
||||||
with open(os.path.join(DIR, "13-tags.org")) as f:
|
with open(os.path.join(DIR, "13-tags.org")) as f:
|
||||||
orig = f.read()
|
orig = f.read()
|
||||||
doc = loads(orig, {
|
doc = loads(
|
||||||
'org-tags-exclude-from-inheritance': ('h1tag', 'otherh2tag'),
|
orig,
|
||||||
})
|
{
|
||||||
|
"org-tags-exclude-from-inheritance": ("h1tag", "otherh2tag"),
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
self.assertEqual(doc.tags, ['filetag'])
|
self.assertEqual(doc.tags, ["filetag"])
|
||||||
|
|
||||||
h1_1, h1_2 = doc.getTopHeadlines()
|
h1_1, h1_2 = doc.getTopHeadlines()
|
||||||
self.assertEqual(sorted(h1_1.tags), ['filetag', 'h1tag'])
|
self.assertEqual(sorted(h1_1.tags), ["filetag", "h1tag"])
|
||||||
self.assertEqual(sorted(h1_2.tags), ['filetag', 'otherh1tag'])
|
self.assertEqual(sorted(h1_2.tags), ["filetag", "otherh1tag"])
|
||||||
|
|
||||||
h1_1_h2 = h1_1.children[0]
|
h1_1_h2 = h1_1.children[0]
|
||||||
self.assertEqual(sorted(h1_1_h2.tags), ['filetag', 'h2tag'])
|
self.assertEqual(sorted(h1_1_h2.tags), ["filetag", "h2tag"])
|
||||||
|
|
||||||
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_select_tags_to_inheritance_property_read_13(self):
|
def test_select_tags_to_inheritance_property_read_13(self):
|
||||||
with open(os.path.join(DIR, "13-tags.org")) as f:
|
with open(os.path.join(DIR, "13-tags.org")) as f:
|
||||||
orig = f.read()
|
orig = f.read()
|
||||||
doc = loads(orig, {
|
doc = loads(
|
||||||
'org-tags-exclude-from-inheritance': ('h1tag', 'otherh2tag'),
|
orig,
|
||||||
'org-use-tag-inheritance': ('h1tag',),
|
{
|
||||||
})
|
"org-tags-exclude-from-inheritance": ("h1tag", "otherh2tag"),
|
||||||
|
"org-use-tag-inheritance": ("h1tag",),
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
self.assertEqual(doc.tags, ['filetag'])
|
self.assertEqual(doc.tags, ["filetag"])
|
||||||
|
|
||||||
h1_1, h1_2 = doc.getTopHeadlines()
|
h1_1, h1_2 = doc.getTopHeadlines()
|
||||||
self.assertEqual(sorted(h1_1.tags), ['h1tag'])
|
self.assertEqual(sorted(h1_1.tags), ["h1tag"])
|
||||||
self.assertEqual(sorted(h1_2.tags), ['otherh1tag'])
|
self.assertEqual(sorted(h1_2.tags), ["otherh1tag"])
|
||||||
|
|
||||||
h1_1_h2 = h1_1.children[0]
|
h1_1_h2 = h1_1.children[0]
|
||||||
self.assertEqual(sorted(h1_1_h2.tags), ['h1tag', 'h2tag'])
|
self.assertEqual(sorted(h1_1_h2.tags), ["h1tag", "h2tag"])
|
||||||
|
|
||||||
h1_2_h2 = h1_2.children[0]
|
h1_2_h2 = h1_2.children[0]
|
||||||
self.assertEqual(sorted(h1_2_h2.tags), ['otherh2tag'])
|
self.assertEqual(sorted(h1_2_h2.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:
|
||||||
|
Loading…
Reference in New Issue
Block a user