@markplus/core
v1.0.6
Published
markplus
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
@// This is a comment
@set version=0.1.0
@set title=MarkPlus
@if version==0.1.0
# {{title}} (v{{version}})
@else
# {{title}} (Unknown version)
@end
Progress:
[process 70%]
[blue]Version: {{version}}[/]
@include ./module.mplus2. 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
@set name=MarkPlus
@set version=0.1.0
Hello, {{name}} v{{version}}Conditions
@set score=88
@if score==100
Perfect!
@elseif score>90
Excellent
@elseif score>60
Pass
@else
Fail
@endLoops
@for lang:JavaScript,TypeScript,Python
- Learn {{lang}}
@endmplusImports
@include ./header.mplus
@include ./sections/part1.mplus;Comments
@// Full line comment
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.
