summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/context/base/verb-lua.lua
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/context/base/verb-lua.lua')
-rw-r--r--Master/texmf-dist/tex/context/base/verb-lua.lua212
1 files changed, 212 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/context/base/verb-lua.lua b/Master/texmf-dist/tex/context/base/verb-lua.lua
new file mode 100644
index 00000000000..78d5f2a2c1f
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/verb-lua.lua
@@ -0,0 +1,212 @@
+-- filename : type-lua.lua
+-- comment : companion to core-buf.tex
+-- author : Hans Hagen, PRAGMA-ADE, Hasselt NL
+-- copyright: PRAGMA ADE / ConTeXt Development Team
+-- license : see context related readme files
+
+-- BROKEN : result is now table
+
+
+
+if not buffers then buffers = { } end
+if not buffers.visualizers then buffers.visualizers = { } end
+if not buffers.visualizers.lua then buffers.visualizers.lua = { } end
+
+buffers.visualizers.lua.identifiers = { }
+
+-- borrowed from scite
+
+buffers.visualizers.lua.identifiers.core = {
+ "and", "break", "do", "else", "elseif", "end", "false", "for", "function",
+ "if", "in", "local", "nil", "not", "or", "repeat", "return", "then",
+ "true", "until", "while"
+}
+
+buffers.visualizers.lua.identifiers.base = {
+ "assert", "collectgarbage", "dofile", "error", "gcinfo", "loadfile",
+ "loadstring", "print", "rawget", "rawset", "require", "tonumber",
+ "tostring", "type", "unpack",
+}
+
+buffers.visualizers.lua.identifiers.five = {
+ "_G", "getfenv", "getmetatable", "ipairs", "loadlib", "next", "pairs",
+ "pcall", "rawequal", "setfenv", "setmetatable", "xpcall", "string", "table",
+ "math", "coroutine", "io", "os", "debug", "load", "module", "select"
+}
+
+buffers.visualizers.lua.identifiers.libs = {
+ -- coroutine
+ "coroutine.create", "coroutine.resume", "coroutine.status", "coroutine.wrap",
+ "coroutine.yield", "coroutine.running",
+ -- package
+ "package.cpath", "package.loaded", "package.loadlib", "package.path",
+ -- io
+ "io.close", "io.flush", "io.input", "io.lines", "io.open", "io.output",
+ "io.read", "io.tmpfile", "io.type", "io.write", "io.stdin", "io.stdout",
+ "io.stderr", "io.popen",
+ -- math
+ "math.abs", "math.acos", "math.asin", "math.atan", "math.atan2", "math.ceil",
+ "math.cos", "math.deg", "math.exp", "math.floor math.", "math.ldexp",
+ "math.log", "math.log10", "math.max", "math.min math.mod math.pi", "math.pow",
+ "math.rad", "math.random", "math.randomseed", "math.sin", "math.sqrt",
+ "math.tan", "math.cosh", "math.fmod", "math.modf", "math.sinh", "math.tanh",
+ "math.huge",
+ -- string
+ "string.byte", "string.char", "string.dump", "string.find", "string.len",
+ "string.lower", "string.rep", "string.sub", "string.upper", "string.format",
+ "string.gfind", "string.gsub", "string.gmatch", "string.match", "string.reverse",
+ -- table
+ "table.maxn", "table.concat", "table.foreach", "table.foreachi", "table.getn",
+ "table.sort", "table.insert", "table.remove", "table.setn",
+ -- os
+ "os.clock", "os.date", "os.difftime", "os.execute", "os.exit", "os.getenv",
+ "os.remove", "os.rename", "os.setlocale", "os.time", "os.tmpname",
+ -- package
+ "package.preload", "package.seeall"
+}
+
+buffers.visualizers.lua.words = { }
+
+for k,v in pairs(buffers.visualizers.lua.identifiers) do
+ for _,w in pairs(v) do
+ buffers.visualizers.lua.words[w] = k
+ end
+end
+
+buffers.visualizers.lua.styles = { }
+
+buffers.visualizers.lua.styles.core = ""
+buffers.visualizers.lua.styles.base = "\\sl "
+buffers.visualizers.lua.styles.five = "\\sl "
+buffers.visualizers.lua.styles.libs = "\\sl "
+
+-- btex .. etex
+
+buffers.visualizers.lua.colors = {
+ "prettyone",
+ "prettytwo",
+ "prettythree",
+ "prettyfour",
+}
+
+buffers.visualizers.lua.states = {
+ ['1']=1, ['2']=1, ['3']=1, ['4']=1, ['5']=1, ['6']=1, ['7']=1, ['8']=1, ['9']=1, ['0']=1,
+ ['--']=4,
+ ['"']=3, ["'"]=3,
+ ['+']=1, ['-']=1, ['*']=1, ['/']=1, ['%']=1, ['^']=1,
+}
+
+buffers.visualizers.lua.options = { }
+
+buffers.visualizers.lua.options.colorize_strings = false
+buffers.visualizers.lua.options.colorize_comments = false
+
+function buffers.flush_lua_word(state, word, result)
+ if #word>0 then
+ local id = buffers.visualizers.lua.words[word]
+ if id then
+ state, result = buffers.change_state(2, state, result)
+ if buffers.visualizers.lua.styles[id] then
+ state, result = buffers.finish_state(state,result .. buffers.visualizers.lua.styles[id] .. word)
+ else
+ state, result = buffers.finish_state(state,result .. word)
+ end
+ return state, result
+ else
+ state, result = buffers.finish_state(state,result)
+ return state, result .. buffers.escaped(word) -- cmp mp
+ end
+ else
+ state, result = buffers.finish_state(state,result)
+ return state, result
+ end
+end
+
+buffers.visualizers.lua.states.incomment = false
+
+-- to be sped up
+
+function buffers.visualizers.lua.flush_line(str, nested)
+ local result, state = { }, 0
+ local instr, inesc, incom = false, false, false
+ local c, p
+ local sb, ss, sf = string.byte, string.sub, string.find
+ local code, comment
+--~ buffers.currentcolors = buffers.visualizers.lua.colors
+--~ if sf(str,"^%-%-%[") then
+--~ buffers.visualizers.lua.states.incomment = true
+--~ code, comment, incom = "", str, true
+--~ elseif sf(str,"^%]%-%-") then
+--~ buffers.visualizers.lua.states.incomment = false
+--~ code, comment, incom = "", str, true
+--~ elseif buffers.visualizers.lua.states.incomment then
+--~ code, comment, incom = "", str, true
+--~ else
+--~ code, comment = string.match(str,"^(.-)%-%-(.*)$")
+--~ if not code then
+--~ code, comment = str, ""
+--~ end
+--~ end
+--~ -- bla bla1 bla.bla
+--~ for c in string.utfcharacters(code) do
+--~ if instr then
+--~ if c == s then
+--~ if inesc then
+--~ result = result .. "\\char" .. sb(c) .. " "
+--~ inesc = false
+--~ else
+--~ state, result = buffers.change_state(buffers.visualizers.lua.states[c], state, result)
+--~ instr = false
+--~ result = result .. "\\char" .. sb(c) .. " "
+--~ state, result = buffers.finish_state(state,result)
+--~ end
+--~ elseif c == "\\" then
+--~ inesc = not inesc
+--~ result = result .. buffers.escaped_chr(c)
+--~ else
+--~ inesc = false
+--~ result = result .. buffers.escaped_chr(c)
+--~ end
+--~ elseif sf(c,"^([\'\"])$") then
+--~ s, instr = c, true
+--~ state, result = buffers.change_state(buffers.visualizers.lua.states[c], state, result)
+--~ result = result .. "\\char" .. sb(c) .. " "
+--~ if not buffers.visualizers.lua.options.colorize_strings then
+--~ state, result = buffers.finish_state(state,result)
+--~ end
+--~ elseif c == " " then
+--~ state, result = buffers.flush_lua_word(state, word, result)
+--~ word = ""
+--~ result = result .. "\\obs "
+--~ elseif sf(c,"^[%a]$") then
+--~ state, result = buffers.finish_state(state,result)
+--~ word = word .. c
+--~ elseif (#word > 1) and sf(c,"^[%d%.%_]$") then
+--~ word = word .. c
+--~ else
+--~ state, result = buffers.flush_lua_word(state, word, result)
+--~ word = ""
+--~ state, result = buffers.change_state(buffers.visualizers.lua.states[c], state, result)
+--~ result = result .. "\\char" .. sb(c) .. " "
+--~ instr = (c == '"')
+--~ end
+--~ end
+--~ state, result = buffers.flush_lua_word(state, word, result)
+--~ if comment ~= "" then
+--~ state, result = buffers.change_state(buffers.visualizers.lua.states['--'], state, result)
+--~ if not incom then
+--~ result = result .. buffers.escaped("--")
+--~ end
+--~ if buffers.visualizers.lua.options.colorize_comments then
+--~ state, result = buffers.finish_state(state,result)
+--~ result = result .. buffers.escaped(comment)
+--~ else
+--~ result = result .. buffers.escaped(comment)
+--~ state, result = buffers.finish_state(state,result)
+--~ end
+--~ else
+--~ state, result = buffers.finish_state(state,result)
+--~ end
+--~ tex.sprint(tex.ctxcatcodes,result)
+ return "not yet finished"
+end