Skip to content

Instantly share code, notes, and snippets.

@deoxxa
Created October 5, 2012 10:41
Show Gist options
  • Save deoxxa/3839198 to your computer and use it in GitHub Desktop.
Save deoxxa/3839198 to your computer and use it in GitHub Desktop.
html dom to markdown lolololololol
function domdown(dom) {
if (dom.type === "tag") {
if (dom.name === "br") {
return " \n";
}
if (dom.name === "em") {
return "*" + ent.decode(dom.data) + "*\n";
}
if (dom.name === "strong") {
return "**" + ent.decode(dom.data) + "**\n";
}
var matches;
if (matches = dom.name.match(/^h(\d+)$/)) {
return (new Array(parseInt(matches[2], 10) + 1).join("#")) + " " + dom.children.map(domdown).join(" ");
}
if (dom.name === "a") {
return "[" + dom.children.map(domdown).join(" ") + "](" + dom.attribs.href + ")";
}
if (dom.name === "blockquote") {
return "> " + ent.decode(dom.data)+"\n";
}
if (dom.name === "hr") {
return "- - -\n";
}
if (dom.name === "code") {
return " " + ent.decode(dom.data)+"\n";
}
if (dom.name === "img") {
return "![" + (dom.attribs.title || dom.attribs.src) + "](" + dom.attribs.src + ")";
}
if (dom.name === "ol") {
var rtnstr = ("1. " + dom.children.map(domdown).join("\n*"));
return rtnstr.substr(0, rtnstr.length-1) + " \n";
}
if (dom.name === "ul" || dom.name === "dl") {
var rtnstr = ("* " + dom.children.map(domdown).join("\n* "));
return rtnstr.substr(0, rtnstr.length-1) + " \n";
}
if (dom.name === "div" || dom.name === "p") {
return dom.children.map(domdown).join("") + " \n";
}
return dom.children.map(domdown).join(" ");
}
if (dom.type === "text") {
return ent.decode(dom.data);
}
return "";
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment