MarkdownMesh

MarkdownMesh is a not-for-profit mission for Markdown.

Tech goals include creating and maintaining:

  1. a Markdown engine (command-line tool + library + text editor extensions) that is simple, secure, extensible, observable, free/libre, and blazingly fast
  2. a collection of similarly-adjective'd Markdown plugins/extensions — both by creating new plugins and by reviewing / summarizing / optimizing / Zig-porting existing ones

Other goals include:

Command-line tool


     cat foo.md | mm html-fragment > foo.html
     cat foo.md | mm html-page     > foo.html
     cat foo.md | mm ast-json      > foo.json
zip -0 -r - md/ | mm zip2zip       > website-build.zip
        cd md/ && mm live-preview

Further reading:

Language extensions

I consider the CommonMark+GFM Spec to be the primary definition of Markdown today.

Any further language extensions are off by default in this engine, but you can opt into them via plugins, e.g.

PluginExampleResult
math$S_1 \cap S_2$
footnotes…[^foo].[^foo]: …
mdx-subset<SomeWidget … />
import-markdown!![](../foo.md#bar):firstPInline a copy of the first paragraph of section Bar from doc Foo
import-code!![](../src/code.py#foo)Inline a copy of the function definition foo from code.py as a CodeBlock whose info_string is py

Plugins

List of plugins:

Concepts

Doc

One Markdown document.

Docset

A set of Docs, e.g. from folders or .zip files of .md files, optionally filtered to a subset of those Docs and a subset of content within those Docs.

Section

A subset of a Doc that contains a Heading followed by the content associated with it (including subsections).

Post

You can consider some Docs or Sections to be "Post"s. This concept is relevant only for some post-related plugins, e.g. rss, signatures, etc.

Syntax tree

a.k.a. "AST", — this is a tree of Elements that code gets parsed to.

Element

For Markdown code, syntax tree elements include Link, CodeBlock, etc.

Engine status

Pages