Hi, I'm currently writing my own wiki, partly to learn about distributed version control systems. As part of that, I'm implementing a creole parser.
Its implemented in PHP5.1+, and uses the DOM extension to build the XHTML/HTML of the document.
2007-02-23#
Updated my implementation at http://homepage.ntlworld.com/jared.williams/creole/Creole.zip
- Now parses BoldAndListsAmbiguity correctly.
- Inline markup (excluding links) within links is now implemented {{[[link|**bold**\\//italics//\\{{{mono}}}]] and [[link|{{http://www.example.org/image.png|image link}}]] .
- Few other bug fixes.
- Table header cells added.
- Headers now define document structure.
=Main Heading= ==1 ===1.1 ==2 ===2.1 ====2.1.1 =====2.1.1.1 ======2.1.1.1.1 =====2.1.1.2 ======2.1.1.2.1 ===2.2 ==3
generates
<div> <div class="section"> <h1>Main Heading</h1> <div class="section"> <h2>1</h2> <div class="section"> <h3>1.1</h3> </div> </div> <div class="section"> <h2>2</h2> <div class="section"> <h3>2.1</h3> <div class="section"> <h4>2.1.1</h4> <div class="section"> <h5>2.1.1.1</h5> <div class="section"> <h6>2.1.1.1.1</h6> </div> </div> <div class="section"> <h5>2.1.1.2</h5> <div class="section"> <h6>2.1.1.2.1</h6> </div> </div> </div> </div> <div class="section"> <h3>2.2</h3> </div> </div> <div class="section"> <h2>3</h2> </div> </div> </div>
2007-02-05#
My current implementation, testsuite, and testsuite output is available at http://homepage.ntlworld.com/jared.williams/creole/Creole.zip.
It should be, if not close to an 0.4 implementation. It guarantees valid XML output (unless a bug in libxml) and should always output valid XHTML. Has a few specific engine quirks, like using <object> for local inclusions, instead of <img>, and as such output isn't intended for displaying directly to a browser.
Problems, comments, test cases all appreciated.