diff options
Diffstat (limited to 'tex/context/base/luat-cnf.lua')
-rw-r--r-- | tex/context/base/luat-cnf.lua | 394 |
1 files changed, 197 insertions, 197 deletions
diff --git a/tex/context/base/luat-cnf.lua b/tex/context/base/luat-cnf.lua index 4020f0b12..3672c603e 100644 --- a/tex/context/base/luat-cnf.lua +++ b/tex/context/base/luat-cnf.lua @@ -1,197 +1,197 @@ -if not modules then modules = { } end modules ['luat-cnf'] = {
- version = 1.001,
- comment = "companion to luat-lib.mkiv",
- author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
- copyright = "PRAGMA ADE / ConTeXt Development Team",
- license = "see context related readme files"
-}
-
-local type, next, tostring, tonumber = type, next, tostring, tonumber
-local format, concat, find = string.format, table.concat, string.find
-
-local allocate = utilities.storage.allocate
-
-texconfig.kpse_init = false
-texconfig.shell_escape = 't'
-
-luatex = luatex or { }
-local luatex = luatex
-
-texconfig.error_line = 79 -- 79 -- obsolete
-texconfig.half_error_line = 50 -- 50 -- obsolete
-
-texconfig.expand_depth = 10000 -- 10000
-texconfig.hash_extra = 100000 -- 0
-texconfig.nest_size = 1000 -- 50
-texconfig.max_in_open = 500 -- 15
-texconfig.max_print_line = 10000 -- 79
-texconfig.max_strings = 500000 -- 15000
-texconfig.param_size = 25000 -- 60
-texconfig.save_size = 50000 -- 4000
-texconfig.stack_size = 10000 -- 300
-
--- local function initialize()
--- local t, variable = allocate(), resolvers.variable
--- for name, default in next, variablenames do
--- local name = variablenames[i]
--- local value = variable(name)
--- value = tonumber(value)
--- if not value or value == "" or value == 0 then
--- value = default
--- end
--- texconfig[name], t[name] = value, value
--- end
--- initialize = nil
--- return t
--- end
---
--- luatex.variables = initialize()
-
-local stub = [[
-
--- checking
-
-storage = storage or { }
-luatex = luatex or { }
-
--- we provide our own file handling
-
-texconfig.kpse_init = false
-texconfig.shell_escape = 't'
-
--- as soon as possible
-
-luatex.starttime = os.gettimeofday()
-
--- this will happen after the format is loaded
-
-function texconfig.init()
-
- -- development
-
- local builtin, globals = { }, { }
-
- libraries = { -- we set it here as we want libraries also 'indexed'
- basiclua = {
- "string", "table", "coroutine", "debug", "file", "io", "lpeg", "math", "os", "package", "bit32",
- },
- basictex = { -- noad
- "callback", "font", "img", "lang", "lua", "node", "pdf", "status", "tex", "texconfig", "texio", "token",
- },
- extralua = {
- "gzip", "zip", "zlib", "lfs", "ltn12", "mime", "socket", "md5", "profiler", "unicode", "utf",
- },
- extratex = {
- "epdf", "fontloader", "kpse", "mplib",
- },
- obsolete = {
- "fontforge", -- can be filled by luat-log
- "kpse",
- },
- functions = {
- "assert", "pcall", "xpcall", "error", "collectgarbage",
- "dofile", "load","loadfile", "require", "module",
- "getmetatable", "setmetatable",
- "ipairs", "pairs", "rawequal", "rawget", "rawset", "next",
- "tonumber", "tostring",
- "type", "unpack", "select", "print",
- },
- builtin = builtin, -- to be filled
- globals = globals, -- to be filled
- }
-
- for k, v in next, _G do
- globals[k] = tostring(v)
- end
-
- local function collect(t,fnc)
- local lib = { }
- for k, v in next, t do
- if fnc then
- lib[v] = _G[v]
- else
- local keys = { }
- local gv = _G[v]
- local tv = type(gv)
- if tv == "table" then
- for k, v in next, gv do
- keys[k] = tostring(v) -- true -- by tostring we cannot call overloades functions (security)
- end
- end
- lib[v] = keys
- builtin[v] = keys
- end
- end
- return lib
- end
-
- libraries.basiclua = collect(libraries.basiclua)
- libraries.basictex = collect(libraries.basictex)
- libraries.extralua = collect(libraries.extralua)
- libraries.extratex = collect(libraries.extratex)
- libraries.functions = collect(libraries.functions,true)
- libraries.obsolete = collect(libraries.obsolete)
-
- -- shortcut and helper
-
- local function init(start)
- local b = lua.bytecode
- local i = start
- local t = os.clock()
- while b[i] do
- b[i]() ;
- b[i] = nil ;
- i = i + 1
- -- collectgarbage('step')
- end
- return i - start, os.clock() - t
- end
-
- -- the stored tables and modules
-
- storage.noftables , storage.toftables = init(0)
- storage.nofmodules, storage.tofmodules = init(%s)
-
- if modules then
- local loaded = package.loaded
- for module, _ in next, modules do
- loaded[module] = true
- end
- end
-
-end
-
--- we provide a qualified path
-
-callback.register('find_format_file',function(name)
- texconfig.formatname = name
- return name
-end)
-
--- done, from now on input and callbacks are internal
-]]
-
-local variablenames = {
- "error_line", "half_error_line",
- "expand_depth", "hash_extra", "nest_size",
- "max_in_open", "max_print_line", "max_strings",
- "param_size", "save_size", "stack_size",
-}
-
-local function makestub()
- name = name or (environment.jobname .. ".lui")
- firsttable = firsttable or lua.firstbytecode
- local t = {
- "-- this file is generated, don't change it\n",
- "-- configuration (can be overloaded later)\n"
- }
- for _,v in next, variablenames do
- local tv = texconfig[v]
- if tv and tv ~= "" then
- t[#t+1] = format("texconfig.%s=%s",v,tv)
- end
- end
- io.savedata(name,format("%s\n\n%s",concat(t,"\n"),format(stub,firsttable)))
-end
-
-lua.registerfinalizer(makestub,"create stub file")
+if not modules then modules = { } end modules ['luat-cnf'] = { + version = 1.001, + comment = "companion to luat-lib.mkiv", + author = "Hans Hagen, PRAGMA-ADE, Hasselt NL", + copyright = "PRAGMA ADE / ConTeXt Development Team", + license = "see context related readme files" +} + +local type, next, tostring, tonumber = type, next, tostring, tonumber +local format, concat, find = string.format, table.concat, string.find + +local allocate = utilities.storage.allocate + +texconfig.kpse_init = false +texconfig.shell_escape = 't' + +luatex = luatex or { } +local luatex = luatex + +texconfig.error_line = 79 -- 79 -- obsolete +texconfig.half_error_line = 50 -- 50 -- obsolete + +texconfig.expand_depth = 10000 -- 10000 +texconfig.hash_extra = 100000 -- 0 +texconfig.nest_size = 1000 -- 50 +texconfig.max_in_open = 500 -- 15 +texconfig.max_print_line = 10000 -- 79 +texconfig.max_strings = 500000 -- 15000 +texconfig.param_size = 25000 -- 60 +texconfig.save_size = 50000 -- 4000 +texconfig.stack_size = 10000 -- 300 + +-- local function initialize() +-- local t, variable = allocate(), resolvers.variable +-- for name, default in next, variablenames do +-- local name = variablenames[i] +-- local value = variable(name) +-- value = tonumber(value) +-- if not value or value == "" or value == 0 then +-- value = default +-- end +-- texconfig[name], t[name] = value, value +-- end +-- initialize = nil +-- return t +-- end +-- +-- luatex.variables = initialize() + +local stub = [[ + +-- checking + +storage = storage or { } +luatex = luatex or { } + +-- we provide our own file handling + +texconfig.kpse_init = false +texconfig.shell_escape = 't' + +-- as soon as possible + +luatex.starttime = os.gettimeofday() + +-- this will happen after the format is loaded + +function texconfig.init() + + -- development + + local builtin, globals = { }, { } + + libraries = { -- we set it here as we want libraries also 'indexed' + basiclua = { + "string", "table", "coroutine", "debug", "file", "io", "lpeg", "math", "os", "package", "bit32", + }, + basictex = { -- noad + "callback", "font", "img", "lang", "lua", "node", "pdf", "status", "tex", "texconfig", "texio", "token", + }, + extralua = { + "gzip", "zip", "zlib", "lfs", "ltn12", "mime", "socket", "md5", "profiler", "unicode", "utf", + }, + extratex = { + "epdf", "fontloader", "kpse", "mplib", + }, + obsolete = { + "fontforge", -- can be filled by luat-log + "kpse", + }, + functions = { + "assert", "pcall", "xpcall", "error", "collectgarbage", + "dofile", "load","loadfile", "require", "module", + "getmetatable", "setmetatable", + "ipairs", "pairs", "rawequal", "rawget", "rawset", "next", + "tonumber", "tostring", + "type", "unpack", "select", "print", + }, + builtin = builtin, -- to be filled + globals = globals, -- to be filled + } + + for k, v in next, _G do + globals[k] = tostring(v) + end + + local function collect(t,fnc) + local lib = { } + for k, v in next, t do + if fnc then + lib[v] = _G[v] + else + local keys = { } + local gv = _G[v] + local tv = type(gv) + if tv == "table" then + for k, v in next, gv do + keys[k] = tostring(v) -- true -- by tostring we cannot call overloades functions (security) + end + end + lib[v] = keys + builtin[v] = keys + end + end + return lib + end + + libraries.basiclua = collect(libraries.basiclua) + libraries.basictex = collect(libraries.basictex) + libraries.extralua = collect(libraries.extralua) + libraries.extratex = collect(libraries.extratex) + libraries.functions = collect(libraries.functions,true) + libraries.obsolete = collect(libraries.obsolete) + + -- shortcut and helper + + local function init(start) + local b = lua.bytecode + local i = start + local t = os.clock() + while b[i] do + b[i]() ; + b[i] = nil ; + i = i + 1 + -- collectgarbage('step') + end + return i - start, os.clock() - t + end + + -- the stored tables and modules + + storage.noftables , storage.toftables = init(0) + storage.nofmodules, storage.tofmodules = init(%s) + + if modules then + local loaded = package.loaded + for module, _ in next, modules do + loaded[module] = true + end + end + +end + +-- we provide a qualified path + +callback.register('find_format_file',function(name) + texconfig.formatname = name + return name +end) + +-- done, from now on input and callbacks are internal +]] + +local variablenames = { + "error_line", "half_error_line", + "expand_depth", "hash_extra", "nest_size", + "max_in_open", "max_print_line", "max_strings", + "param_size", "save_size", "stack_size", +} + +local function makestub() + name = name or (environment.jobname .. ".lui") + firsttable = firsttable or lua.firstbytecode + local t = { + "-- this file is generated, don't change it\n", + "-- configuration (can be overloaded later)\n" + } + for _,v in next, variablenames do + local tv = texconfig[v] + if tv and tv ~= "" then + t[#t+1] = format("texconfig.%s=%s",v,tv) + end + end + io.savedata(name,format("%s\n\n%s",concat(t,"\n"),format(stub,firsttable))) +end + +lua.registerfinalizer(makestub,"create stub file") |