From 03068992fa44475f901eb34cec49f2a2304b473f Mon Sep 17 00:00:00 2001 From: Matthijs Kooijman Date: Sun, 6 Dec 2009 17:18:42 +0100 Subject: [PATCH] Prettyprint comments in italic. --- pret-haskell.lua | 7 +++++++ pret-lam.lua | 20 ++++++++++++++++---- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/pret-haskell.lua b/pret-haskell.lua index 4ce8d3e..ca3a165 100644 --- a/pret-haskell.lua +++ b/pret-haskell.lua @@ -40,6 +40,13 @@ function visualizer.flush_line(str,nested) ctxsprint('}') -- Eat the processed characters str = rest + elseif utf.match(str, "^%-%-") then + ctxsprint('{\\italic{--') + -- Recursively call ourselves to handle spaces gracefully. + visualizer.flush_line(utf.sub(str, 3)) + ctxsprint('}}') + -- Done with this line + str = '' else -- Write the first character texwrite(utf.sub(str, 1, 1)) diff --git a/pret-lam.lua b/pret-lam.lua index f8ddb67..41ffbc7 100644 --- a/pret-lam.lua +++ b/pret-lam.lua @@ -175,6 +175,7 @@ local function do_indent(line) copyind = utf.sub(indentlines[prev], 1, #newind) setwidth = "\\setwidthof{" .. copyind .. "}\\to\\pretlamalignwidth" hskip = "\\hskip\\pretlamalignwidth" + print("{" .. setwidth .. hskip .. "}" .. rest) return "{" .. setwidth .. hskip .. "}" .. rest end -- No previous line? Just return the unmodified line then @@ -221,12 +222,16 @@ vis.begin_of_inline = vis.begin_of_display vis.end_of_inline = vis.end_of_display function vis.flush_line(str,nested) - buffers.flush_result(vis.do_line(str), nested) + buffers.flush_result(vis.do_line(str, false), nested) end -function vis.do_line(str) +function vis.do_line(str, no_indent) result = {} - str = do_indent(str) + if not no_indent then + -- Allow ignore of the indentation stuff when we're calling ourselves + -- for a partial line. + str = do_indent(str) + end while str ~= "" do local found = false local word, symbol @@ -234,10 +239,17 @@ function vis.do_line(str) if text then table.insert(result, '\\strikethrough{') -- Recursively call ourselves to handle spaces gracefully. - result = array_concat(result, vis.do_line(text)) + result = array_concat(result, vis.do_line(text, true)) table.insert(result, '}') -- Eat the processed characters str = rest + elseif utf.match(str, "^%-%-") then + table.insert(result, '{\\italic{--') + -- Recursively call ourselves to handle spaces gracefully. + result = array_concat(result, vis.do_line(utf.sub(str, 3), true)) + table.insert(result, '}}') + -- Done with this line + str = '' else -- See if the next token is a word word, str = take_word(str) -- 2.30.2