Add specs for pandoc markdown renderer
This commit is contained in:
@@ -10,6 +10,15 @@ _prepare_command = (cmd, ...) ->
|
||||
args = table.concat args, " "
|
||||
"#{cmd} #{args}"
|
||||
|
||||
write_exec = (cmd, content) ->
|
||||
fname = os.tmpname!
|
||||
f = assert io.popen _prepare_command(cmd, fname), "w"
|
||||
|
||||
with f\write content
|
||||
f\close!
|
||||
|
||||
fname
|
||||
|
||||
-- config command like this in site.moon:
|
||||
-- require("renderers.markdown").cmd = "pandoc --mathjax >"
|
||||
class PandocRenderer extends require "sitegen.renderers.markdown"
|
||||
@@ -17,25 +26,7 @@ class PandocRenderer extends require "sitegen.renderers.markdown"
|
||||
escape_cosmo = @escape_cosmo
|
||||
|
||||
cmd: "pandoc --mathjax --lua-filter pygments.lua >"
|
||||
|
||||
pandoc: (md_source) =>
|
||||
fname = os.tmpname!
|
||||
with io.popen _prepare_command(@@cmd, fname), "w"
|
||||
\write md_source
|
||||
\close!
|
||||
|
||||
p = io.open fname
|
||||
out = p\read"*a"
|
||||
|
||||
-- if mat = out\match('<div class="highlight"><pre>(.-)\n?</pre></div>')
|
||||
-- rep = '<div class="sourceCode"><pre class="sourceCode ' .. 'moonscript"><code class="sourceCode ' .. 'moonscript">' .. mat .. '</code></pre></div>'
|
||||
-- out = out\gsub('<div class="highlight"><pre>(.-)\n?</pre></div>', rep)
|
||||
|
||||
out
|
||||
|
||||
-- get rid of the div and pre inserted by pygments
|
||||
-- assert out\match('^<div class="highlight"><pre>(.-)\n?</pre></div>'),
|
||||
-- "Failed to parse pygmentize result, is pygments installed?"
|
||||
pandoc: (content) => Path.read_file write_exec @@cmd, content
|
||||
|
||||
render: (page, md_source) =>
|
||||
md_source = page\pipe "renderer.markdown.pre_render", md_source
|
||||
|
||||
Reference in New Issue
Block a user