I agree with the message of the post, i.e. make your tool do only one thing (the unix philosophy) but I am not sure breaking up a Markdown parser into a 3-staged pipeline is the best execution of it.
Something like MultiMarkdown¹ converts Markdown to XML and then uses the XML tool suite (XSLT) to further transform that to (X)HTML, LaTeX, etc. and can be used to extract information from the Markdown documents as well (XPath/XQuery).
Despite my dislike of XML this is more useful to me as a user because I don’t have to learn about his Markdent event API and write subclasses in Perl to actually examine the Markdown documents.
Something like MultiMarkdown¹ converts Markdown to XML and then uses the XML tool suite (XSLT) to further transform that to (X)HTML, LaTeX, etc. and can be used to extract information from the Markdown documents as well (XPath/XQuery).
Despite my dislike of XML this is more useful to me as a user because I don’t have to learn about his Markdent event API and write subclasses in Perl to actually examine the Markdown documents.
¹ http://fletcherpenney.net/multimarkdown/