Skip to content

feat(new tool): Markdown Format Converter#488

Open
erichschroeter wants to merge 6 commits into
sharevb:chore/all-my-stuffsfrom
erichschroeter:feature/markdown-to-slack-mrkdwn
Open

feat(new tool): Markdown Format Converter#488
erichschroeter wants to merge 6 commits into
sharevb:chore/all-my-stuffsfrom
erichschroeter:feature/markdown-to-slack-mrkdwn

Conversation

@erichschroeter

Copy link
Copy Markdown

Implements #485
image

This PR adds the Markdown Format Converter tool. It decouples format parsing from rendering by introducing custom Abstract Syntax Tree (AST) tokenizers for each supported format.

Key Features

  • Strategy Pattern Enhancements: Added lex(input: string): Token[] to the ConverterStrategy interface.
  • Custom Format Parsers (AST-based):
    • Slack Strategy: Normalizes Slack-specific markers (*bold*, _italic_, ~strike~, <url|text>) and converts single-line bold texts into headings before parsing.
    • Jira Strategy: Processes ordered/unordered lists, {code}, {quote}, headings, !image!, and bracket links into GFM before lexing.
    • Logseq Strategy: Normalizes Logseq outline bullets, strips internal metadata, and handles the logseq.order-list-type:: number block property to correctly build GFM ordered lists.
  • UI & Locales:
    • Added a Source Format dropdown next to the Target Format dropdown.

Validation & Testing

  • Added cross-format test suites verifying Slack-to-Jira, Jira-to-Slack, and Logseq-to-GitHub conversions.

Warning

I have not tested Jira.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants