Move the example float definition to Utils/.
[matthijs/master-project/report.git] / pret-haskell.lua
index bf74fe075b6a3e7149922e3398687a2602d47de5..f1dc31bdc421aea7cf2dbd0842463a98cb963432 100644 (file)
@@ -9,24 +9,40 @@ local utf = unicode.utf8
 
 local visualizer = buffers.newvisualizer('haskell')
 
+-- Print a string or table of strings with the catcodes set to the default
+-- context ones. Use this function to print a string that contains context
+-- macro's that should be interpreted. Does not insert any automatic
+-- linebreaking.
+local function ctxsprint(str) 
+    tex.sprint(ctxcatcodes, str)
+end
+
+-- Print a string or table of strings almost literal. Each character in the
+-- string will be printed with the "character" catcode, causing it to show up
+-- literal in the output. Only the space character is printed with the "space"
+-- catcode.
+local function texwrite(str)
+    tex.write(str)
+end 
+
 function visualizer.flush_line(str,nested)
     while str ~= '' do
         if utf.match(str, '^ ') then 
-            tex.sprint('\\obs ')
+            ctxsprint('\\obs ')
             -- Eat the first character
             str = utf.sub(str, 2)
         else
             local text, rest = utf.match(str, "^%-%-(.-)%-%-(.*)")
             if text then
-                tex.sprint('\\strikethrough{')
+                ctxsprint('\\strikethrough{')
                 -- Recursively call ourselves to handle spaces gracefully.
                 visualizer.flush_line(text)
-                tex.sprint('}')
+                ctxsprint('}')
                 -- Eat the processed characters
                 str = rest
             else
                 -- Write the first character
-                tex.write(utf.sub(str, 1, 1))
+                texwrite(utf.sub(str, 1, 1))
                 -- Eat the first character
                 str = utf.sub(str, 2)
             end