#markup #generator #hypertext #literate-programming #markdown #static-site-generator #markup-language

nightly bin+lib murkdown

An experimental semantic markup language and static site generator for composing and decomposing hypertext documents

2 releases

new 0.1.1 Dec 8, 2024
0.1.0 Oct 17, 2024

#2063 in Parser implementations

AGPL-3.0-only

170KB
4.5K SLoC

Murkdown

An experimental semantic markup language and static site generator for composing and decomposing hypertext documents.

Installation

Using Cargo

If you have installed the Rust toolchain, you can install using cargo:

cargo install murkdown

Quick Start

Create the file example.md with the follow content:

# Exciting times!

You see, it's like Markdown on the surface.

You can write paragraphs.

* And
* Create
* Lists

> [!TIP]
> You can make callouts.

And that's where the similarities end.

> [!TABS]
>> [!CODE](language="python" id="foo")
>> def foo():
>>   print("hello world")
>
>> [!CODE](language="typescript" id="bar")
>> const bar = () => console.log("hello world")
>
>> [!CODE](language="plaintext" id="baz" src="archimedes")

And they can be composed, in exciting ways:

> [!NOTE LIST](id="archimedes")
> The more you know, the more you know you don't know.
> Our problem is not that we aim too high and miss, but that we aim too low and hit.

That's enough to get you started.

Compile it by invoking the Murkdown cli:

$ md build --as "simple website" ./example.md

Open the result from build/:

$ open build/example.html

Examples

For more examples, head over to the tests and corresponding *.in/ directories therein.

Design

Some of the principles fueling the work:

  • Literate programming
  • Local first
  • Worse is better
  • Composability

Additional constraints motivated by curiosity and personal taste:

  • Avoidance of start and end tags
  • Avoidance of inline markup
  • Avoidance of control structures and loops
  • Avoidance of emoji

License

The source code is licensed under the AGPL v3 License.

Dependencies

~10–20MB
~273K SLoC