From 76ca707e9b3eabd950c4b005ea86e791136d3d68 Mon Sep 17 00:00:00 2001 From: Catalin Constantin Mititiuc Date: Mon, 16 Jun 2025 20:18:05 -0700 Subject: [PATCH] WIP: argh --- renderers/markdown.moon | 78 +++++++++++++++++++++++++++++++++++------ 1 file changed, 67 insertions(+), 11 deletions(-) diff --git a/renderers/markdown.moon b/renderers/markdown.moon index 846b081..ae8427b 100644 --- a/renderers/markdown.moon +++ b/renderers/markdown.moon @@ -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" unescape_cosmo = @unescape_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) => + -- blah = oh + + -- print @@cmd + -- blah! + -- require("moon").p blah "these" md_source = page\pipe "renderer.markdown.pre_render", md_source md_source, escapes = escape_cosmo md_source - markup_filename = os.tmpname! - input_handle = io.popen @command .. " > " .. markup_filename, "w" - input_handle\write 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 = assert @pandoc md_source + html_source = assert blah md_source + -- html_source = assert pandoc md_source html_source = unescape_cosmo html_source, escapes super page, html_source