11

Is there already a markdown to XML parser implemented in Mathematica? I wrote a one for my pelican rewrite, but realized I should have asked here first. Mine is almost certainly faulty in a few major ways (I just don't know them yet) and would much rather use some one else's if it exists.

b3m2a1
  • 46,870
  • 3
  • 92
  • 239
  • I do not think Mathematica has a ton of support for Markdown in any capacity. Maybe someone knows something I do not though. – ktm Aug 28 '17 at 02:21
  • @user6014 I'm pretty sure there's no native implementation for anything. It would be nice, but also something of a blow given the amount of time I've sunk implementing this kind of thing. I was more wondering if the community had some gold-standard markdown parser. – b3m2a1 Aug 28 '17 at 02:48
  • Most of the discussions I have seen on MSE are about the other direction: from Mathematica to Markdown. You might find some useful ideas in this answer of "CSS Selectors for Symbolic XML". – Anton Antonov Aug 28 '17 at 13:21
  • @AntonAntonov the issue is less doing it myself as I've already done that. I more wanted to know if someone else has done it better. But that answer on CSS selectors is very useful. I will need to remember that one. – b3m2a1 Aug 28 '17 at 15:20
  • If you really need this (for using, not self-education), I would write a wrapper for some established library. Or why not just use the XHTML produced by the original application: https://daringfireball.net/projects/markdown/ – masterxilo Sep 04 '17 at 16:17
  • @masterxilo If I were to do that I'd want to do it in at the C level through LibraryLink, rather than introduce the ProcessLink overhead. And at that point the Markdown spec is simple enough, why not implement it oneself? I think it's a) a manageable problem and b) more easily tweak-able if implemented in Mathematica. But if someone had already done the work to write a "MarkdownLink`" I'd go with that. – b3m2a1 Sep 04 '17 at 16:51

2 Answers2

6

To get the ball rolling, here's my incomplete parser.

And here's a minimal markdown sample.


This is what my markdown parser makes of it, used like so:

CloudExport[
 MarkdownToXML[
   Import["https://raw.githubusercontent.com/b3m2a1/mathematica-BTools/\
 master/Resources/Templates/PacletServer/content/pages/About.md",
    "Text"
    ],
  "StripMetaInformation" -> False
  ],
 "HTML",
 "user:b3m2a1.testing/mdtest.html",
 Permissions -> "Public"
 ]

CloudObject["https://www.wolframcloud.com/objects/b3m2a1.testing/mdtest.html"]

(Note that it will strip that meta-information header block by default, hence the "StripMetaInformation"->False)

b3m2a1
  • 46,870
  • 3
  • 92
  • 239
2

The package "Markdown2WL" attempts that, but unfortunately it is fairly incomplete. Also, see the corresponding Community post.


(In general I like the idea of a Markdown-to-Mathematica converter written in Mathematica.)

Anton Antonov
  • 37,787
  • 3
  • 100
  • 178