1
0
Fork
You've already forked nml
0
Nice Markup Language! this is the 'specification' for a markup language I made up, it's mostly based on gemtext, markdown, bismark and my crazy ideas.
2025年11月11日 12:44:19 +01:00
LICENSE Initial commit 2025年10月05日 18:10:36 +02:00
README.md Warn that development on this project is now paused. 2025年11月11日 12:44:19 +01:00

Nice Markup Language!

WARNING: I WILL NOT BE WORKING ON THIS PROJECT ANY MORE, SO THAT I CAN FOCUS ON reticulum_ex. NOTE: THIS SPEC(and the language it specifies) IS STILL WIP!

this is the 'specification' for a markup language I made up, it's mostly based on gemtext, markdown, bismark and my crazy ideas.

Features

  • line-based, except for some optional elements.
  • extensible(a lot)
  • can be used for websites, books, forms, slideshows and can be extended for more!

Quick Introduction

here are all the elements that exist in NML:

Name Required* Format Description Example
text yes is the default if it isn't detected to be another element. you can force a line to be text by beginning it with a backslash. normal text, nothing fancy Lorem ipsum dolor sit amet.
heading 1(title) yes begins with # followed by optional whitespace the name of the document # Welcome to My Website!
heading 2(section) yes begins with ## followed by optional whitespace the title of a section of the document ## Contact me!
heading 3(subsection) yes begins with ### followed by optional whitespace the title of a subsection of the document ### By Email
link yes begins with => followed by optional whitespace, then there's the url, and there can be, optionally, a label placed after the url, with whitespace between them a link with an optional label => https://example.com Example Website
verbatim block toggle(code block toggle) yes begins with ```. text in the line that starts a new verbatim block, after the ```, specifies a format/programming language for syntaxt highlighting toggles if the content below is in a verbatim block or not(default is no) ```python\nprint("Hello, world!")\n```
table line no, but reccomended columns are separated with | and can have optional whitespace around the |.
the first line will always be the header.
pipe(|) characters can be escaped using a backslash(\), meaning \| will just be a pipe.
tables which can contains nice data! | username | email |
| int32 | int32@example.com |
| someone | someone@example.com |
thematic breaks no a line with only ---. like a heading, it means we're in a new section, but it doesn't have a name Lorem ipsum dolor sit amet.
---
The quick brown fox jumps over the lazy dog.
dinkus no a line with only ***. thematic breaks but fancy Lorem ipsum dolor sit amet.\n***\nThe quick brown fox jumps over the lazy dog.
metadata tag yes begins with #!(shebang!), followed by the tag name, whitespace and finally it's value provides metadata about the (non-metadata) element following it #!author Int32
bold formatting no can be anywhere in any kind of text, begins and ends with *(there needs to be a space before the first and after the last *, but the space will still be rendered) be bold I **love** pasta.
italic formatting no can be anywhere in any kind of text, begins and ends with _(there needs to be a space before the first and after the last _, but the space will still be rendered) be italic _dura lex, sed lex_
verbatim formatting no can be anywhere in any kind of text, begins and ends with ` be verbatim println!("Hello, world!")

* all clients SHOULD support these!

Elements

TODO