RULES FOR markdown PRODUCE text/markdown
/* ------------------------------------------------ */
PREPROCESS RULES:
[...DATE...]$
EXEC "date" TO text/plain AS "date"
PUSH src "exec?:date"
[...EXEC...]$
PUSH src "exec?:run"
[...EXEC...] [SEC]$
SET stdin "\v"
EXEC "bash" TO text/plain AS "run"
[...UML...]$
PUSH ref "exec:plantuml.png"
[...UML...] [SEC]$
SET stdin "\v"
EXEC "plantuml -pipe -tpng" TO image/png AS "plantuml.png"
[...IMAGE...]$
IS REF-BY-COPY
/* ------------------------------------------------ */
COMPILE RULES:
/* root */
^[...]$
SET join "\n"
^[...] [SEC...] [...]$
IS COMPOSABLE
SET spacer " "
^[...] [SEC...] [CODE] [SEC...]$
IS COMPOSABLE
SET spacer ""
/* code section */
[...CODE...] [SEC...]$
WRITEALL prefix
WRITE spacer
WRITE "```$language\n"
YIELD
WRITE "\n"
WRITEALL prefix
WRITE spacer
WRITE "```\n"
/* figure block */
[...FIGURE...]$
YIELD
/* root image block*/
^[...] [SEC...] ([ FIGURE ] [ SEC ] )?[...IMAGE...]$
WRITEALL prefix
WRITE ""
/* image block */
[...IMAGE...]$
WRITEALL prefix
WRITE " "
/* callout block */
[...TIP...]$
PUSH prefix "\m"
WRITEALL prefix
WRITE " [!TIP]\n"
YIELD
POP prefix
/* plain code block */
[CODE]$
SET language "$language"
YIELD
SET language ""
/* code block */
[...CODE...]$
SET language "$language"
PUSH prefix "\m"
YIELD
POP prefix
SET language ""
/* root block */
^[...] [SEC...] [...]$
PUSH prefix "\m"
YIELD
POP prefix
/* heading block */
[...] [SEC...] [...HEADING...]$
PUSH prefix "\m"
YIELD
POP prefix
/* nested block */
[...] [SEC...] [...]$
PUSH prefix " \m"
YIELD
POP prefix
/* root plain code line */
^[...] [SEC...] [CODE] [SEC...] LINE$
IS UNESCAPED_VALUE
WRITEALL prefix
WRITE "\v"
/* code line */
[...CODE...] [SEC...] LINE$
IS UNESCAPED_VALUE
WRITEALL prefix
WRITE " \v"
/* image line */
[...IMAGE...] [SEC...] LINE$
WRITE "\v"
/* other */
^[...] [SEC...] LINE$
IS UNESCAPED_VALUE
WRITE prefix
WRITE "\v"
LINE$
IS UNESCAPED_VALUE
WRITEALL prefix
WRITE spacer
WRITE "\v"