feat: Support markup inside headline titles.
This commit is contained in:
parent
baaa7cbb86
commit
0e90abbb63
@ -266,7 +266,9 @@ class Headline:
|
||||
self.priority_start = priority_start
|
||||
self.priority = priority
|
||||
self.title_start = title_start
|
||||
self.title = title
|
||||
self.title = parse_content_block(
|
||||
[RawLine(linenum=start_line, line=title)]
|
||||
)
|
||||
self.state = state
|
||||
self.tags_start = tags_start
|
||||
self.shallow_tags = tags
|
||||
@ -1146,9 +1148,18 @@ class Text:
|
||||
def __repr__(self):
|
||||
return "{{Text line: {}; content: {} }}".format(self.linenum, self.contents)
|
||||
|
||||
def get_text(self):
|
||||
return token_list_to_plaintext(self.contents)
|
||||
|
||||
def get_raw(self):
|
||||
return token_list_to_raw(self.contents)
|
||||
|
||||
def token_list_to_plaintext(tok_list) -> str:
|
||||
return "".join([
|
||||
chunk
|
||||
for chunk in tok_list
|
||||
if isinstance(chunk, str)
|
||||
])
|
||||
|
||||
def token_list_to_raw(tok_list):
|
||||
contents = []
|
||||
@ -1683,7 +1694,7 @@ class OrgDoc:
|
||||
if headline.state:
|
||||
state = headline.state + " "
|
||||
|
||||
yield "*" * headline.depth + headline.spacing + state + headline.title + tags
|
||||
yield "*" * headline.depth + headline.spacing + state + token_list_to_raw(headline.title.contents) + tags
|
||||
|
||||
planning = headline.get_planning_line()
|
||||
if planning is not None:
|
||||
|
10
tests/09-markup-on-headline.org
Normal file
10
tests/09-markup-on-headline.org
Normal file
@ -0,0 +1,10 @@
|
||||
#+TITLE: 09-Markup-on-headline
|
||||
#+DESCRIPTION: Simple org file to test markup parsing on headlines
|
||||
#+TODO: TODO(t) PAUSED(p) | DONE(d)
|
||||
|
||||
|
||||
* Headline _with_ markup
|
||||
:PROPERTIES:
|
||||
:ID: 09-markup-on-headline-headline-with-markup-id
|
||||
:CREATED: [2020-01-01 Wed 01:01]
|
||||
:END:
|
@ -619,3 +619,18 @@ class TestSerde(unittest.TestCase):
|
||||
*** Third headline
|
||||
""".strip(),
|
||||
)
|
||||
|
||||
|
||||
def test_markup_file_09(self):
|
||||
with open(os.path.join(DIR, "09-markup-on-headline.org")) as f:
|
||||
doc = load(f)
|
||||
|
||||
hl = doc.getTopHeadlines()[0]
|
||||
print(hl.title)
|
||||
self.assertEqual(hl.title.contents, [
|
||||
'Headline ',
|
||||
MarkerToken(closing=False, tok_type=MarkerType.UNDERLINED_MODE),
|
||||
'with',
|
||||
MarkerToken(closing=True, tok_type=MarkerType.UNDERLINED_MODE),
|
||||
' markup',
|
||||
])
|
||||
|
@ -59,7 +59,7 @@ class HL:
|
||||
self.children = children
|
||||
|
||||
def assert_matches(self, test_case: unittest.TestCase, doc):
|
||||
test_case.assertEqual(self.title, doc.title)
|
||||
test_case.assertEqual(self.title, get_raw(doc.title))
|
||||
|
||||
# Check properties
|
||||
if self.props is None:
|
||||
|
Loading…
Reference in New Issue
Block a user