On Sagittarius, I was, well still am, using scribble, which the parser is ported from Chibi Scheme, to write the document. Recently, though it's been already a couple of years, I've been thinking that using one of the documentation formats might be better so that users can read better on the repository if they want to use the latest version.
So, I've updated (text markdown)
library to support better Markdown.
The library is based on commonmark-java
, and more or less compliant
with Commonmark specifications. The library keeps the old behaviour, which
generates a sort of old intermediate format and HTML, though that should be
considered deprecated.
The basic usage of the library can be like this:
(import (rnrs)
(text markdown)
(text sxml serializer))
(define (main args)
(let ((file (cadr args)))
(call-with-input-file file
(lambda (in)
(let ((node (parse-markdown markdown-parser in)))
(srl:sxml->html-noindent
(markdown-converter:convert default-markdown-converter 'html node)
(current-output-port)))))))
So parse-markdown
procedure parses the input textual port according to the
given markdown-parser
, which is one of the default parsers provided by
the library. The other default parser is commonmark-parser
, which strictly conforms Commonmark specification.
markdown-parser
-
This supports most of the GFM, footnotes and definition list
commonmark-parser
-
This only supports things listed on Commonmark specification. So, no table, no strikethrough or others.
The above script is actually used to generate this post. This means, obviously,
the markdown-parser
is used (as the code already shows :D)
NOTE: Below is the convenient (also for my memo) command to generate an HTML post.
# For Mac
sash blogpost-markdown.scm post.md | pbcopy
There's also a library called (text markdown extensions)
and
(text markdown converters)
. These libraries provide an API / framework to
provide custom extensions, such as GFM, which is mostly supported by the
library.
Next step
Sagittarius document requires a bit more tweaks. Below are the requirements
- Table of contents
- Index table
- eval expression
- Page split per section
- Proper anchor per pages
- Navigation bar
Most of the things are done already, just a bit more. I think after this is done, I can finally release 0.9.9.
No comments:
Post a Comment