<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On Oct 20, 2011, at 2:13 PM, Tao Klerks wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div>OK, so pardon my ignorance here: Am I right in assuming that there are are<br>two people here who are responsible for at least 5 different but<br>to-varying-degrees-compatible markdown systems/dialects?<br><br>Fletcher T. Penney:<br> - MultiMarkdown (original version/codebase)<br> - peg-MultiMarkdown<br> - MMD Composer (new PEG? why? the behaviours are obviously different, but<br>how is the syntax tree different?)<br></div></blockquote><div><br></div><div>peg-mmd (MMD 3) replaces the old perl version 2. &nbsp;v 2 still exists on github, but I am no longer actively developing it. &nbsp;Trying to bring it into compliance with MMD 3 was going to take too much work to be justified. &nbsp;Anyone else is welcome to continue working on it, however.</div><div><br></div><div>Composer uses the same syntax as MMD 3, and uses MMD 3 itself to handle previews/exports. The PEG has to be modified because we are highlighting, not parsing. &nbsp;PEGs are not drop-in magic bundles that do everything for you. They define how to parse the input text. &nbsp;It's up to the programmer to do something useful with that parsing. &nbsp;But think of Composer as an implementation of MMD 3, not as something distinct in this sense.</div><div><br></div><br><blockquote type="cite"><div>John MacFarlane<br> - peg-markdown<br> - pandoc <br> - Lunamark<br></div></blockquote><div><br></div><div><br></div>&lt;snip&gt;</div><div><br><blockquote type="cite"><div>But the main problem here, you both seem to agree, is to define a formal<br>grammar that will define the correct AST for a base/common Markdown syntax,<br>and could have a series of tests (be those the original John Gruber tests,<br>or Michel Fortin's later ones) define "compliance" for a base set of<br>features?<br></div></blockquote><div><br></div><div>Yes. &nbsp;I think it's useful to have a "reference" implementation that demonstrates that formal grammar. &nbsp;But the standard should be the grammar itself, not a specific implementation (which was one of the problems with Gruber's "the implementation is the reference" approach).</div><br><blockquote type="cite"><div>John, you say the lunamark implementation is better, passes more of Michel<br>Fortin's tests, and is "different" to peg-markdown to an unknown degree<br>(because it presumably uses a different syntax to express the same grammar<br>concepts?)... Is there any way for you and Fletcher to (without any<br>significant amount of conversion work) understand what, if anything, would<br>need to change in peg-markdown for it to represent an accurate common ground<br>between both peg-MultiMarkdown and LunaMark?<br></div></blockquote><div><br></div><div>If John brought peg-markdown into compliance with lunamark, then by extension peg-multimarkdown would be compliant when I pulled his changes.</div><br><blockquote type="cite"><div>Fletcher, there's one thing I'm not completely clear on: besides the syntax<br>extensions that you made, is peg-MultiMarkdown still basically doing the<br>same as peg-markdown for 99% of cases where peg-MultiMarkdown's<br>features/extensions are not explicitly/purposefully used by an end-user? Or<br>have you made changes to the "base" workings to accommodate your additional<br>syntax requirements?<br></div></blockquote><div><br></div><div>If you run peg-multimarkdown with the "compliant" flag, it *should* be 100% identical in output to peg-markdown. &nbsp;Composer has a preference that does just that. &nbsp;Any differences between the two are unintentional, and problems could be readily fixed when identified.</div><br><blockquote type="cite"><div>Sorry if I'm being overly familiar here - I just felt, for a few moments,<br>like I was seeing some light at the end of the tunnel.<br></div></blockquote><br></div><div>That's why I brought up some of the points the way I did today. &nbsp;I feel like MacFarlane has a done a great job formalizing much of the Markdown syntax. &nbsp;That's not to say that his interpretation is entirely correct, or that others have not done an equally good job. &nbsp;When I decided to rewrite MMD last fall, his implementation seemed to be the most flexible, cross-platform, and easily understood approach. &nbsp;So I went with it, and now it's the one I'm most familiar with.</div><div><br></div><div>That's why I feel like it is 90% of the way towards being a useable standard. &nbsp;Other developers can test out various edge cases and bring them up for discussion. &nbsp;Appropriate changes can be made as needed to the underlying formal grammar. &nbsp;A test suite can then be developed.</div><div><br></div><div>I believe that the issue of standardizing the syntax extensions will be a more challenging problem to tackle. &nbsp;But this would be a huge step, and probably generate momentum that would carry over.</div><div><br></div><div><br></div>F-<div><br><div>
<span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>-- &nbsp;</div><div>Fletcher T. Penney</div><div><a href="mailto:fletcher@fletcherpenney.net">fletcher@fletcherpenney.net</a></div></div></span></div></span></div></span></div></span></div></span></div></span></span>
</div>
<br></div></body></html>