[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [ANN] guile-commonmark 0.1 (A markdown parser)
From: |
Christopher Allan Webber |
Subject: |
Re: [ANN] guile-commonmark 0.1 (A markdown parser) |
Date: |
Thu, 04 Aug 2016 11:59:49 -0500 |
User-agent: |
mu4e 0.9.16; emacs 24.5.1 |
Erik Edrosa writes:
> Hello everyone,
>
> Awhile back for the potluck I posted a CommonMark[0] parser I written in
> pure Guile Scheme which outputs SXML. Today I have decided to release
> version 0.1, it currently supports parsing almost the entire CommonMark
> spec besides block and inline HTML. guile-commonmark will not support
> block and inline HTML as the spec allows malformed HTML to be written
> which can't be transformed to SXML. guile-commonmark also follows a
> slightly older version of the spec and one of the major differences are
> tabs are expanded into spaces(including tabs in code blocks).
>
> Here is an example usage:
> (use-modules (commonmark)
> (sxml simple))
>
> (define doc
> "A CommonMark Document
> ===============
> Here is some *scheme* `code`
> ```scheme
> (display \"Hello, World!\")
> ```
>
> 1. A list
> 2. Another item in a list
>
> Read more about [CommonMark](http://commonmark.org/)")
>
> ;; Parse the CommonMark document into sxml
> (define doc-sxml (commonmark->sxml doc))
>
> ;; Writes to current output port
> (sxml->xml doc-sxml)
> (newline)
>
>
> Which outputs(formatted for readability):
>
> <h1>A CommonMark Document</h1>
> <p>Here is some <em>scheme</em> <code>code</code></p>
> <pre>
> <code class="language-scheme">(display "Hello, World!")
> </code>
> </pre>
> <ol>
> <li>A list</li>
> <li>Another item in a list</li>
> </ol>
> <p>Read more about <a href="http://commonmark.org/">CommonMark</a></p>
>
>
> You may download the release at
> https://github.com/OrangeShark/guile-commonmark/releases/download/v0.1/guile-commonmark-0.1.tar.gz
>
> GNU Guix users can install guile-commonmark using the attached guix.scm file
>
> guile-commonmark is still a young project, so expect plenty of bugs.
> Please report any bugs to https://github.com/OrangeShark/guile-commonmark
>
>
> As a bonus for haunt users, here is an example using guile-commonmark as
> a reader to generate a blog written in markdown.
>
> (use-modules (haunt asset)
> (haunt builder blog)
> (haunt builder atom)
> (haunt reader)
> (haunt site)
> (haunt post)
> (commonmark))
>
> (define commonmark-reader
> (make-reader (make-file-extension-matcher "md")
> (lambda (file)
> (call-with-input-file file
> (lambda (port)
> (values (read-metadata-headers port)
> (commonmark->sxml port)))))))
>
> (site #:title "Built with Guile"
> #:domain "example.com"
> #:default-metadata
> '((author . "Eva Luator")
> (email . "address@hidden"))
> #:readers (list commonmark-reader)
> #:builders (list (blog)
> (atom-feed)
> (atom-feeds-by-tag)))
>
> Now just save the above as haunt.scm and put your markdown blog posts in
> the posts directory with a .md extension and run `haunt build`. Here is
> an example blog post:
>
> title: Hello World!
> date: 2016-07-24 10:00
> tags: guile, commonmark, scheme
> ---
>
> A CommonMark Document
> ===============
> Here is some *scheme* `code`
> ```scheme
> (display "Hello, World!")
> ```
>
> 1. A list
> 2. Another item in a list
>
> Read more about [CommonMark](http://commonmark.org/)
>
>
> Please note the header on top portion of the post which allows you to
> add metadata to your blog posts for haunt.
>
> Thanks,
> Erik
>
> [0]: http://commonmark.org/
This is awesome! We should get this packaged for Guix :)
Nice work!
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [ANN] guile-commonmark 0.1 (A markdown parser),
Christopher Allan Webber <=