Path = require "sitegen.path" needs_shell_escape = (str) -> not not str\match "[^%w_-]" shell_escape = (str) -> str\gsub "'", "''" _prepare_command = (cmd, ...) -> args = for x in *{...} if needs_shell_escape x then "'#{shell_escape x}'" else x args = table.concat args, " " "#{cmd} #{args}" -- config command like this in site.moon: -- require("renderers.markdown").cmd = "pandoc --mathjax >" class PandocRenderer extends require "sitegen.renderers.markdown" unescape_cosmo = @unescape_cosmo escape_cosmo = @escape_cosmo 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('
(.-)\n?
' .. mat .. '
(.-)\n?
(.-)\n?