diff --git a/index.js b/index.js
index a8c8af5..92c42b3 100755
--- a/index.js
+++ b/index.js
@@ -72,11 +72,11 @@ app.post('/', function(req, res) {
res.status(400).send("Please provide a POST parameter called html");
} else {
try {
- let document = new JSDOM(html);
- let markdown = process_dom(url, document, res, inline_title, ignore_links);
- send_headers(res);
- res.send(markdown);
- } catch (error) {
+ let document = new JSDOM(html);
+ let markdown = process_dom(url, document, res, inline_title, ignore_links);
+ send_headers(res);
+ res.send(markdown);
+ } catch (error) {
res.status(400).send("Could not parse that document");
}
}
@@ -98,11 +98,12 @@ function process_dom(url, document, res, inline_title, ignore_links) {
res.header("X-Title", encodeURIComponent(title.textContent));
let reader = new Readability(document.window.document);
let readable = reader.parse().content;
- let replacement = {placeholders:[], tables:[]}
- readable = format_tables(readable, replacement);
+ let replacements = []
+ readable = format_tables(readable, replacements);
+ readable = format_code_blocks(readable, replacements);
let markdown = service.turndown(readable);
- for (let i=0;i
]*>(?:.|\n)*?<\/pre>)/gi); + if (code_blocks) { + for (let cb=0;cb"+placeholder+""); + } + } + return html; +} + +function code_block_to_markdown (html) { + const match_pre = /^ ]*>([\s\S]*)<\/pre>$/ig.exec(html); + let inner_html = match_pre[1]; + const match_code = /^\s*]*>[\r\n]*([\s\S]*)<\/code>\s*$/ig.exec(inner_html); + if (match_code && match_code[1]) + inner_html = match_code[1]; + const markdown = "```\n"+inner_html+"\n```\n"; + return markdown; +}