WIP: argh

This commit is contained in:
Catalin Constantin Mititiuc 2025-06-16 20:18:05 -07:00
parent 6dcb9e60b2
commit 76ca707e9b

View File

@ -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