Component design

Grid system

Row is a grid 12 columns in size. A column can be of a size of one up to 12 column size.

1u
1u
1u
1u
1u
1u
1u
1u
1u
1u
1u
1u

Each possible size

1u
2u
3u
4u
5u
6u
7u
8u
9u
10u
11u
12u

Some relations

6u
6u
4u
4u
4u
3u
3u
3u
3u
3u
6u
3u
2u
8u
2u

Some relations with padding

6u
6u
4u
4u
4u

Color

Text Back Back dark
Primary test test test
Secondary 1 test test test
Secondary 2 test test test

Menu

Hero

GRM is a GeneRic Markup language

GRM is aimed to be:

  • flexible as XML;
  • simpler to parse than JSON;
  • as easy to write as Markdown.

Sections headings

Title 1 (page title)

Title 2

Title 3

Title 4

Title 3

Title 2

Text display

Sit nemo iste amet explicabo pariatur inventore Est placeat odio facilis odio dicta incidunt. Nesciunt aliquam debitis magnam architecto iusto? Vero minus dolorem magnam eius eaque? Repellat elit excepturi error. Sit nemo iste amet explicabo pariatur inventore Est placeat odio facilis odio dicta incidunt. Nesciunt aliquam debitis magnam architecto iusto? Vero minus dolorem magnam eius eaque? Repellat elit excepturi error. Sit nemo iste amet explicabo pariatur inventore There is a link that can be visited. And here is some code and another code that can be inlined.Est placeat odio facilis odio dicta incidunt. Nesciunt aliquam debitis magnam architecto iusto? Vero minus dolorem magnam eius eaque? Repellat elit excepturi error. Sit nemo iste amet explicabo pariatur inventore Est placeat odio facilis odio dicta incidunt. Nesciunt aliquam debitis magnam architecto iusto? Vero minus dolorem magnam eius eaque? Repellat elit excepturi error.

Code examples

Code for one language

GRM
# This is an example.
{article-title Markup languages}
{section [title="What is a markup language?"]
	{paragraph It {em structures} a text document.}
}

Code for multiple languages

XML
<root>
	<-- This is an example. -->
	<article-title>Markup languages</article-title>
	<section title="What is a markup language">
		<paragraph>It <em>structures</em> a text document.</paragraph>
	</section>
</root>
JSON
[
  {"article-title": "Markup languages"},
  {"section": "What is a markup language"},
  {
    "paragraph": [
      "It ",
      {"em": "structures"},
      " a text document."
    ]
  }
]

Full example side-by-side

GRM
# This is an example.
{article-title Markup languages}
{section What is a markup language}
{paragraph It {em structures} a text document.}
XML
<root>
  <article-title>Markup languages</article-title>
  <section>What is a markup language</section>
  <paragraph>It <em>structures<em> a text document.<paragraph>
</root>
JSON
[
  {"article-title": "Markup languages"},
  {"section": "What is a markup language"},
  {
	"paragraph": [
	  "It ",
	  {"em": "structures"},
	  " a text document."
	]
  }
]

Glossary

Attribute
An element which gives additional information for a Typed Node. An {voc-ref Attribute} has an Attribute Key and optionally an Attribute Value.
Comment
An element that is not interpreted by a GRM parser. The purpose of a {voc-ref Comment} is the same as the purpose of a comment in any programming languages or markup languages.
GRM
A markup language aimed to be short to write, easy to parse and customizable. GRM stands for "GeneRic Markup".

Rules

Encoding and characters

Rule C1R01
Unicode is used, and preferrably URF-8. A {voc-ref GRM} parser must support characters above the Basic Multilingual Plane (BMP) for which their Unicode code point is above U+FFFF. For example: emojis.
Rule C1R02
GRM documents are case-sensible. This means that a and A are two distinct characters.
Rule C1R03
The following control characters are totally ignored by GRM. This means that a GRM document containing them is valid, but the parser ignores them.
  • From NULL (U+0000) to BACKSPACE (U+0008).
  • From VERTICAL TAB (U+000B) to INFORMATION SEPARATOR ONE (U+001F).
  • From DELETE (U+007F) to APPLICATION PROGRAM COMMAND (U+009F).

Syntax definition

List of general single characters

newline
The character \n (NEWLINE, U+0001).
tab
The character \t (HORIZONTAL TAB, U+0009).
space
The character SPACE (U+0020).
whitespace
A newline or tab or a space.
letter
Any character from a to z or from A to Z.
invisible-char
Any character that cannot be seen by a reader. In other words, it is a character for which a printer would not used any ink to display it. Listing all possible {syn-ref invisible-char} is too daunting a task, so here is a non-exhaustive list.
  • A whitespace.
  • A character from this list from Characters.
    • NO BREAK SPACE (U+00A0);
    • SOFT HYPHEN (U+00AD);
    • COMBINING GRAPHEME JOINER (U+034F);