WIP: argh
This commit is contained in:
parent
6dcb9e60b2
commit
76ca707e9b
@ -1,23 +1,79 @@
|
|||||||
|
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}"
|
||||||
|
|
||||||
|
write_exec = (input, cmd, ...) ->
|
||||||
|
handle = io.popen _prepare_command(cmd, ...), "w"
|
||||||
|
with handle\write input
|
||||||
|
handle\close!
|
||||||
|
|
||||||
|
get_pandoc = (md_source) =>
|
||||||
|
markup_filename = os.tmpname!
|
||||||
|
write_exec md_source, @@cmd, markup_filename
|
||||||
|
Path.read_file markup_filename
|
||||||
|
|
||||||
|
-- blah = (...) => pandoc, @, ...
|
||||||
|
|
||||||
|
get_thing = (md_source) =>
|
||||||
|
markup_filename = os.tmpname!
|
||||||
|
write_exec md_source, @cmd, markup_filename
|
||||||
|
Path.read_file markup_filename
|
||||||
|
|
||||||
|
test = =>
|
||||||
|
require("moon").p @cmd
|
||||||
|
-- print thing
|
||||||
|
|
||||||
|
-- blah = ->
|
||||||
|
-- require("moon").p @cmd
|
||||||
|
|
||||||
|
oh = ->
|
||||||
|
require("moon").p @
|
||||||
|
|
||||||
class PandocRenderer extends require "sitegen.renderers.markdown"
|
class PandocRenderer extends require "sitegen.renderers.markdown"
|
||||||
unescape_cosmo = @unescape_cosmo
|
unescape_cosmo = @unescape_cosmo
|
||||||
escape_cosmo = @escape_cosmo
|
escape_cosmo = @escape_cosmo
|
||||||
|
-- pandoc = (...) -> get_pandoc @, ...
|
||||||
|
pandoc: get_pandoc
|
||||||
|
-- require("moon").p @cmd
|
||||||
|
-- blah = ->
|
||||||
|
-- require("moon").p @cmd
|
||||||
|
-- pandoc = (md_source) ->
|
||||||
|
-- markup_filename = os.tmpname!
|
||||||
|
-- write_exec md_source, @cmd, markup_filename
|
||||||
|
-- Path.read_file markup_filename
|
||||||
|
|
||||||
command: "pandoc"
|
-- blah = test @
|
||||||
|
-- blah = (words) ->
|
||||||
|
-- words
|
||||||
|
|
||||||
|
-- blah = (words) -> test @
|
||||||
|
blah = (md_source) -> get_thing @, md_source
|
||||||
|
|
||||||
|
@cmd: "pandoc >"
|
||||||
|
|
||||||
|
-- test: =>
|
||||||
|
-- "test"
|
||||||
|
|
||||||
render: (page, md_source) =>
|
render: (page, md_source) =>
|
||||||
|
-- blah = oh
|
||||||
|
|
||||||
|
-- print @@cmd
|
||||||
|
-- blah!
|
||||||
|
-- require("moon").p blah "these"
|
||||||
md_source = page\pipe "renderer.markdown.pre_render", md_source
|
md_source = page\pipe "renderer.markdown.pre_render", md_source
|
||||||
md_source, escapes = escape_cosmo md_source
|
md_source, escapes = escape_cosmo md_source
|
||||||
|
|
||||||
markup_filename = os.tmpname!
|
-- html_source = assert @pandoc md_source
|
||||||
input_handle = io.popen @command .. " > " .. markup_filename, "w"
|
html_source = assert blah md_source
|
||||||
input_handle\write md_source
|
-- html_source = assert pandoc md_source
|
||||||
input_handle\close!
|
|
||||||
|
|
||||||
output_handle = io.open markup_filename, "r"
|
|
||||||
result = output_handle\read "*a"
|
|
||||||
output_handle\close!
|
|
||||||
|
|
||||||
html_source = assert result
|
|
||||||
html_source = unescape_cosmo html_source, escapes
|
html_source = unescape_cosmo html_source, escapes
|
||||||
|
|
||||||
super page, html_source
|
super page, html_source
|
||||||
|
Loading…
x
Reference in New Issue
Block a user