diff --git a/favro_sync/favro_markdown.py b/favro_sync/favro_markdown.py index feb1618..6a02572 100644 --- a/favro_sync/favro_markdown.py +++ b/favro_sync/favro_markdown.py @@ -13,10 +13,11 @@ class CardContents: tags: list[str] assignments: list[str] card_dependencies: list[str] + url: str def format_obsidian_link(text: str) -> str: - return f'"[[{text}]]"' + return f'[[{text}]]' def parse_obsidian_link(text: str) -> str: @@ -34,8 +35,6 @@ class CardFileFormatter: self.renderer = marko.md_renderer.MarkdownRenderer() def format_card_contents(self, card: CardContents) -> str: - ls = [] - # Choose frontmatter data frontmatter_data = {} if card.name and self.obsidian_mode: @@ -57,19 +56,8 @@ class CardFileFormatter: for name in frontmatter_data['dependencies'] ] - # Frontmatter - if frontmatter_data: - ls.append('---\n') - for key, values in frontmatter_data.items(): - ls.append(key) - ls.append(':\n') - for v in values: - ls.append(' - ') - ls.append(v) - ls.append('\n') - ls.append('---\n\n') - # Card name + ls = [] if card.name: ls.append('# ') ls.append(card.name) @@ -78,7 +66,8 @@ class CardFileFormatter: # Card contents if card.description: ls.append(card.description) - return ''.join(ls) + fm = frontmatter.Post(''.join(ls), **frontmatter_data) + return frontmatter.dumps(fm) def parse_card_contents(self, contents: str) -> CardContents: """ @@ -112,4 +101,5 @@ class CardFileFormatter: tags=tags, assignments=assignments, card_dependencies=card_dependencies, + url='', # TODO ) diff --git a/test/test_markdown_parsing.py b/test/test_markdown_parsing.py index 9fa3793..16d6fa2 100644 --- a/test/test_markdown_parsing.py +++ b/test/test_markdown_parsing.py @@ -3,7 +3,7 @@ from favro_sync.favro_markdown import CardFileFormatter EXAMPLE_TEXT_1 = """ --- aliases: - - Hello World +- Hello World --- # Hello World @@ -20,15 +20,15 @@ Test description EXAMPLE_TEXT_2 = """ --- aliases: - - Name of Card -tags: - - tag1 - - tag2 +- Name of Card assignments: - - "[[Gunnar Gunnarson]]" - - "[[Alice Alicedottor]]" +- '[[Gunnar Gunnarson]]' +- '[[Alice Alicedottor]]' dependencies: - - "[[PAR-9999]]" +- '[[PAR-9999]]' +tags: +- tag1 +- tag2 --- # Name of Card @@ -36,6 +36,17 @@ dependencies: Great news everyone! My weird program actually works! """.strip() +EXAMPLE_TEXT_3 = """ +--- +aliases: +- 'Card: The Adventure of Card' +--- + +# Card: The Adventure of Card + +Description of Card. +""".strip() + FORMATTER = CardFileFormatter() @@ -54,3 +65,11 @@ def test_parse_and_render_2(): assert card_contents.name == 'Name of Card' assert '---' not in card_contents.description assert FORMATTER.format_card_contents(card_contents) == EXAMPLE_TEXT_2 + +def test_parse_and_render_3(): + card_contents = FORMATTER.parse_card_contents(EXAMPLE_TEXT_3) + print(card_contents) + + assert card_contents.name == 'Card: The Adventure of Card' + assert '---' not in card_contents.description + assert FORMATTER.format_card_contents(card_contents) == EXAMPLE_TEXT_3