[ANN] PEG Markdown Highlight

Mathias mathias at parboiled.org
Wed Jun 29 04:28:58 EDT 2011



> Hot damn! I asked about this about a year ago on this list when I was writing my Cocoa Markdown editor[1], but I couldn't get this info out of any of the C-based libraries easily. So my app ended up as a big hairy ball of regular expressions.


A year ago pegdown did not have this retention of positional data in its AST, so even if you had been open to an ugly C <-> Java bridge thing it wouldn't have worked.
And I have to say: Initially it seemed a lot simpler to implement this correctly than it actually turned out to be. pegdown uses Johns recursive parsing strategy for lists and blockquotes, which positional retention is somewhat tricky to get right for...

Anyway, everything is good now... :)

Cheers,
Mathias

---
mathias at parboiled.org
http://www.parboiled.org

On 29.06.2011, at 10:13, Bodhi wrote:


>> the AST generated in phase 1 retains all positional information about the underlying markdown source

>

>

> Hot damn! I asked about this about a year ago on this list when I was writing my Cocoa Markdown editor[1], but I couldn't get this info out of any of the C-based libraries easily. So my app ended up as a big hairy ball of regular expressions.

>

> [1]: http://keshiki.net/markdown-editor (slightly outdated)

> code: https://github.com/bodhi/markdownEditor

>

> On 29/06/2011, at 6:03 PM, Mathias wrote:

>

>> Related to this:

>>

>> For some time now there is a [markdown plugin][1] for the IntelliJ IDEA IDE and all derived ones (RubyMine, PhpStorm, etc). that does exactly what Ali is describing: syntax-highlighting based on the parser of an actual markdown processor, which in this case is [pegdown][2], that started off as a java port of John MacFarlane's peg-markdown.

>>

>> The way this works:

>> pegdown does its markdown-to-HTML in two phases:

>> 1. parsing of the markdown source into an Abstract Syntax Tree

>> 2. serialization of the AST to HTML

>>

>> Since the AST generated in phase 1 retains all positional information about the underlying markdown source it's very easy to syntax-highlight the editor buffer based solely on this AST (which is exactly what the plugin is doing).

>>

>> So if anyone is looking for a markdown syntax-highlighting solution for the JVM pegdown is probably something to look at.

>> For C-based applications the peg-markdown-highlight by Ali is certainly the better choice...

>>

>> Cheers,

>> Mathias

>>

>> [1]: https://github.com/nicoulaj/idea-markdown

>> [2]: http://www.pegdown.org

>>

>> ---

>> mathias at parboiled.org

>> http://www.parboiled.org

>>

>> On 28.06.2011, at 20:51, Ali Rantakari wrote:

>>

>>> Dear fellow Markdown enthusiasts,

>>>

>>> As you all might know, Markdown is a highly context sensitive language that the (often regex-based) syntax highlighting mechanisms in existing editors struggle to keep up with.

>>>

>>> I have taken John MacFarlane's excellent peg-markdown compiler and modified its parser to function as an interpreter for syntax highlighting purposes. The end result is a Markdown-specific syntax highlighter that should be able to match Markdown documents just as correctly as peg-markdown can, and that can easily be integrated into existing and new programs.

>>>

>>> You can find all the relevant information at the project web page:

>>>

>>> <http://hasseg.org/peg-markdown-highlight>

>>>

>>>

>>> best,

>>> - Ali Rantakari

>>>

>>>

>>> _______________________________________________

>>> Markdown-Discuss mailing list

>>> Markdown-Discuss at six.pairlist.net

>>> http://six.pairlist.net/mailman/listinfo/markdown-discuss

>>

>> _______________________________________________

>> Markdown-Discuss mailing list

>> Markdown-Discuss at six.pairlist.net

>> http://six.pairlist.net/mailman/listinfo/markdown-discuss

>

> _______________________________________________

> Markdown-Discuss mailing list

> Markdown-Discuss at six.pairlist.net

> http://six.pairlist.net/mailman/listinfo/markdown-discuss




More information about the Markdown-Discuss mailing list