markplus-parser
v1.0.0
Published
markplus
Downloads
138
Readme
MarkPlus
A lightweight, programmable superset of Markdown — with variables, conditionals, loops, imports, progress bars, and more.
Overview
MarkPlus enhances standard Markdown with programming-style features while keeping syntax clean and readable. It compiles seamlessly to plain Markdown or HTML, making it ideal for templates, dynamic docs, notes, and structured content.
Features
- Variables – Define and reuse values with
@setand{{var}} - Conditionals –
@if/@elseif/@else/@end - Loops – Simple iteration with
@for - File Imports – Modularize with
@include(relative paths supported) - Inline Comments –
@//comment (works anywhere in a line) - Progress Bars – Render with
[process 75%] - Colored Text – Inline color syntax
<span style="color:blue">text</span> - Todo Lists – Extended checkbox support
- Block Containers – Styled blocks like
:::tip / :::warn
Quick Start
1. Write a .mplus file
# {{title}} (v{{version}})
Progress:
[process 70%]
<span style="color:blue">Version: {{version}}</span>
[ERR] Failed to import -Error: ENOENT: no such file or directory, open './module.mplus'2. Compile
const fs = require('fs');
const path = require('path');
const MarkPlusCompiler = require('./src/MarkPlusCompiler');
const compiler = new MarkPlusCompiler();
const inputPath = path.resolve(__dirname, 'test.mplus');
const source = fs.readFileSync(inputPath, 'utf8');
const output = compiler.compile(source, inputPath);
fs.writeFileSync('output.md', output);3. Run
npm run mplus yourfile.mplusSystax Reference
Variables
Hello, {{name}} {{version}}Conditions
FailLoops
@for lang:JavaScript,TypeScript,Python
- Learn {{lang}}
@endmplusImports
[ERR] Failed to import -Error: ENOENT: no such file or directory, open './header.mplus'
[ERR] Failed to import -Error: ENOENT: no such file or directory, open './sections/part1.mplus;'Comments
Hello @// inline commentProgress Bars
Colored Text
Error Info Custom color
API
MarkPlusCompiler
compile(input: string, filePath?: string): string;input: raw.mpluscontentfilePath: absolute path for resolving relative@include
Cli
const inputFile = process.argv[2];VSCode Syntax Highlighting
Now developing.
Common Issues
@include ENOENT error
- Cause: relative path not resolved correctly
- Fix: pass the absolute path of the source file to
compile()
@// not stripping correctly
- Fix: use
split('@//')[0]to trim inline comments
Conditionals rendered as plain text
- Fix: use
startsWith('@elseif')without trailing space
License
MIT (c)2026, Sunleo1230, All rights reserved.
