marked.js
63 lines
| 1.9 KiB
| application/javascript
|
JavascriptLexer
MinRK
|
r14206 | // Node.js script for markdown to html conversion | ||
// This applies the same math extraction and marked settings | ||||
// that we use in the live notebook. | ||||
// IPython static_path dir relative to here: | ||||
var static_path = __dirname + "/../../html/static/"; | ||||
Jonathan Frederic
|
r17205 | // Excerpt from the example in require.js docs | ||
// http://requirejs.org/docs/node.html | ||||
var requirejs = require('requirejs'); | ||||
requirejs.config({ | ||||
//Pass the top-level main.js/index.js require | ||||
//function to requirejs so that node modules | ||||
//are loaded relative to the top-level JS file. | ||||
nodeRequire: require, | ||||
baseUrl: static_path, | ||||
}); | ||||
MinRK
|
r14206 | |||
Jonathan Frederic
|
r17205 | requirejs([ | ||
'fs', | ||||
'components/marked/lib/marked', | ||||
'components/highlight.js/build/highlight.pack', | ||||
'base/js/utils', | ||||
'notebook/js/mathjaxutils', | ||||
], function(fs, marked, hljs, utils, mathjaxutils) { | ||||
MinRK
|
r14206 | |||
Jonathan Frederic
|
r17205 | // this is copied from notebook.main. Should it be moved somewhere we can reuse it? | ||
marked.setOptions({ | ||||
gfm : true, | ||||
tables: true, | ||||
langPrefix: "language-", | ||||
highlight: function(code, lang) { | ||||
if (!lang) { | ||||
// no language, no highlight | ||||
return code; | ||||
} | ||||
var highlighted; | ||||
try { | ||||
highlighted = hljs.highlight(lang, code, false); | ||||
} catch(err) { | ||||
highlighted = hljs.highlightAuto(code); | ||||
} | ||||
return highlighted.value; | ||||
MinRK
|
r14206 | } | ||
Jonathan Frederic
|
r17205 | }); | ||
MinRK
|
r14206 | |||
Jonathan Frederic
|
r17205 | // read the markdown from stdin | ||
var md=''; | ||||
process.stdin.on("data", function (data) { | ||||
md += data; | ||||
}); | ||||
// perform the md2html transform once stdin is complete | ||||
process.stdin.on("end", function () { | ||||
var text_and_math = mathjaxutils.remove_math(md); | ||||
var text = text_and_math[0]; | ||||
var math = text_and_math[1]; | ||||
var html = marked.parser(marked.lexer(text)); | ||||
html = mathjaxutils.replace_math(html, math); | ||||
process.stdout.write(html); | ||||
}); | ||||
MinRK
|
r14206 | |||
}); | ||||