A markup language based on Markdown, designed for note-taking and article creation.
File extension: .mdn
- Headings (
#to######) - Lists
- Unordered lists with nesting
- Ordered lists with nesting
- Task lists with checkboxes
- Code blocks (with 3+ backticks, supports nesting)
- Block quotes
- Horizontal rules
- Tables with alignment
- Bold (
**text**) - Italic (
*text*) - Bold + Italic (
***text***) - Strikethrough (
~~text~~) - Inline code (
`text`) - Hyperlinks (
[text](url)) - Images (
) - Captioned images (
-)
- Footnotes -
[^1]with definitions - Definition lists -
term : definition - Details blocks -
===summary ... === - Admonition blocks -
:::note [type] ... :::- Types:
info(blue),warn(orange),alert(red)
- Types:
- Ruby text (Furigana) -
{kanji}(reading) - Comments -
// comment - Escape sequences -
\*,\#, etc.
# Output HTML to console
npm run start -- <input.mdn>
# Output HTML to file with embedded CSS
npm run start -- <input.mdn> -f
# Output token stream
npm run start -- <input.mdn> -t
# Output AST
npm run start -- <input.mdn> -a
# Output HTML fragment
npm run start -- <input.mdn> -hThe parser uses a 3-stage pipeline:
- Tokenization (
Tokenizer) - Converts Markmodern text into a token stream - AST Generation (
ASTGenerator) - Builds an Abstract Syntax Tree with inline element parsing - Serialization (
HTMLSerializer) - Converts AST to HTML output
- Recursive block processing for complex nested structures
- Fence-aware code block parsing with variable lengths (3+ backticks)
- Support for nested lists with indentation
- CSS embedding in HTML output
MIT © 2026 GrassfieldK
Contributions are welcome! Please feel free to submit a Pull Request.