{main
{h1 Title}
{p
Paragraph 1.
{{a {href google.com}} Here is a link.}}
{p
Paragraph 2, now with {b bold} text.}}
The nice thing about HTML/XML is that it's a clear data-structure, so you can essentially read it in any format you like and convert that to the underlying tree structure without much issue. That's why it's been so successful, basically the same philosophy as a lisp. Why someone would look at that and think "let's go back to a document with no clear structure" is beyond me.Replace the braces with parens and you can parse that into a tree with only a handful of lisp macros.
(define (code-block file-name)
{pre {{code {class block}}
#(cmd "highlight" (thisdir (string-append "posts/" file-name))
"-O" "html" "--inline-css" "--fragment"
"--line-numbers" "--line-number-length" "3")}})
And it fits quite nicely with surrounding code. The mapping of these curly expressions to Scheme ones is relatively simple, though there is
a special case for joining words to brackets. {a {b} #c #@d} => `("a" ("b") ,c ,@d)
{a {b}c} => `("a" ("b") join "c") <table>
<tr>
<td>first row, first column
<td>first row, second column
<td>first row, third column
<tr>
<td>second row, first column
<td>second row, second column
<td>second row, third column
</table>
Does it get any better in markdown?