summaryrefslogtreecommitdiff
path: root/tex/context/base/mkiv/core-env.lmt
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/mkiv/core-env.lmt')
-rw-r--r--tex/context/base/mkiv/core-env.lmt213
1 files changed, 0 insertions, 213 deletions
diff --git a/tex/context/base/mkiv/core-env.lmt b/tex/context/base/mkiv/core-env.lmt
deleted file mode 100644
index 388e96787..000000000
--- a/tex/context/base/mkiv/core-env.lmt
+++ /dev/null
@@ -1,213 +0,0 @@
-if not modules then modules = { } end modules ['core-env'] = {
- version = 1.001,
- comment = "companion to core-env.mkiv",
- author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
- copyright = "PRAGMA ADE / ConTeXt Development Team",
- license = "see context related readme files"
-}
-
--- maybe this will move to the context name space although the
--- plurals are unlikely to clash with future tex primitives
---
--- if tex.modes['xxxx'] then .... else .... end
-
-local rawset = rawset
-
-local P, C, S, lpegmatch, patterns = lpeg.P, lpeg.C, lpeg.S, lpeg.match, lpeg.patterns
-
-local context = context
-local ctxcore = context.core
-
-local texgetcount = tex.getcount
-local texgetintegervalue = token.get_integer -- todo: in tex namespace
-
-local allocate = utilities.storage.allocate
-local setmetatableindex = table.setmetatableindex
-local setmetatablenewindex = table.setmetatablenewindex
-local setmetatablecall = table.setmetatablecall
-
-local createtoken = token.create
-local isdefined = tokens.isdefined
-
-texmodes = allocate { } tex.modes = texmodes
-texsystemmodes = allocate { } tex.systemmodes = texsystemmodes
-texconstants = allocate { } tex.constants = texconstants
-texconditionals = allocate { } tex.conditionals = texconditionals
-texifs = allocate { } tex.ifs = texifs
-texisdefined = allocate { } tex.isdefined = texisdefined
-
-local modes = { }
-local systemmodes = { }
-
--- we could use the built-in tex.is[count|dimen|skip|toks] here but caching
--- at the lua end is not that bad (and we need more anyway)
-
-local cache = tokens.cache
-
--- we can have a modes cache too
-
-local commandcodes = tokens.commands
-local iftrue = cache["iftrue"].index
-
--- local dimencode = cache["scratchdimen"] .command -- tokens.commands.register_dimen
--- local countcode = cache["scratchcounter"].command -- tokens.commands.register_int
--- local tokencode = cache["scratchtoks"] .command -- tokens.commands.register_toks
--- local skipcode = cache["scratchskip"] .command -- tokens.commands.register_glue
--- local muskipcode = cache["scratchmuskip"] .command -- tokens.commands.register_mu_glue
--- local conditioncode = cache["iftrue"] .command -- tokens.commands.if_test
-
--- local types = {
--- [dimencode] = "dimen",
--- [countcode] = "count",
--- [tokencode] = "token",
--- [skipcode] = "skip",
--- [muskipcode] = "muskip",
--- -- [attributecode] = "attribute",
--- [conditioncode] = "condition"
--- }
-
-local dimencode = commandcodes.register_dimen -- cache["scratchdimen"] .command -- tokens.commands.register_dimen
-local countcode = commandcodes.register_int -- cache["scratchcounter"].command -- tokens.commands.register_int
-local tokencode = commandcodes.register_toks -- ["scratchtoks"] .command -- tokens.commands.register_toks
-local skipcode = commandcodes.register_glue -- cache["scratchskip"] .command -- tokens.commands.register_glue
-local muskipcode = commandcodes.register_mu_glue -- cache["scratchmuskip"] .command -- tokens.commands.register_mu_glue
-local conditioncode = commandcodes.if_test -- cache["iftrue"] .command -- tokens.commands.if_test
-local integercode = commandcodes.integer
-
-local types = {
- [dimencode] = "dimen",
- [countcode] = "count",
- [tokencode] = "token",
- [skipcode] = "skip",
- [muskipcode] = "muskip",
- -- [attributecode] = "attribute",
- [conditioncode] = "condition",
- [integercode] = "integer",
-}
-
-setmetatableindex(texmodes, function(t,k)
- local m = systemmodes[k]
- if not m then
- local n = "mode>" .. k
- m = function() return texgetintegervalue(n) == 1 end
- rawset(modes,k,m)
- end
- return m()
-end)
-
-setmetatableindex(texsystemmodes, function(t,k)
- local m = systemmodes[k]
- if not m then
- local n = "mode>*" .. k
- m = function() return texgetintegervalue(n) == 1 end
- rawset(modes,k,m)
- end
- return m()
-end)
-
--- also a call method
-
-context.settrialtypesettingmethod(function() return texsystemmodes.trialtypesetting end)
-
-setmetatablenewindex(texmodes, function(t,k) report_mode("you cannot set the %s named %a this way","mode", k) end)
-setmetatablenewindex(texsystemmodes, function(t,k) report_mode("you cannot set the %s named %a this way","systemmode", k) end)
-setmetatablenewindex(texconstants, function(t,k) report_mode("you cannot set the %s named %a this way","constant", k) end)
-setmetatablenewindex(texconditionals, function(t,k) report_mode("you cannot set the %s named %a this way","conditional",k) end)
-setmetatablenewindex(texifs, function(t,k) end)
-
--- if we really need performance we can have a dedicated cache for each
--- kind of variable ... maybe we no longer have to cache anyway (in lmtx)
-
-setmetatableindex(texconstants, function(t,k)
- -- return cache[k].command == countcode and texgetcount(k) or 0
- return cache[k].command == integercode and texgetintegervalue(k) or 0
-end)
-
-setmetatableindex(texconditionals, function(t,k) -- 0 == true
- -- return cache[k].command == countcode and texgetcount(k) == 0
- return cache[k].command == integercode and texgetintegervalue(k) == 0
-end)
-
-setmetatableindex(texifs, function(t,k)
- local c = cache[k]
- return c.command == conditioncode and c.index == iftrue
-end)
-
-tex.isdefined = isdefined
-
-function tex.isdimen(name)
- local hit = cache[name]
- return hit.command == dimencode and hit.index or true
-end
-
-function tex.iscount(name)
- local hit = cache[name]
- return hit.command == countcode and hit.index or true
-end
-
-function tex.istoken(name)
- local hit = cache[name]
- return hit.command == tokencode and hit.index or true
-end
-
-function tex.isskip(name)
- local hit = cache[name]
- return hit.command == skipcode and hit.index or true
-end
-
-function tex.ismuskip(name)
- local hit = cache[name]
- return hit.command == muskipcode and hit.index or true
-end
-
-function tex.type(name)
- return types[cache[name].command] or "macro"
-end
-
-function context.setconditional(name,value)
- if value then
- ctxcore.settruevalue(name)
- else
- ctxcore.setfalsevalue(name)
- end
-end
-
-function context.setmode(name,value)
- if value then
- ctxcore.setmode(name)
- else
- ctxcore.resetmode(name)
- end
-end
-
-function context.setsystemmode(name,value)
- if value then
- ctxcore.setsystemmode(name)
- else
- ctxcore.resetsystemmode(name)
- end
-end
-
-context.modes = texmodes
-context.systemmodes = texsystemmodes
-context.conditionals = texconditionals
--------.constants = texconstants
--------.ifs = texifs
-
-local sep = S("), ")
-local str = C((1-sep)^1)
-local tag = P("(") * C((1-S(")" ))^1) * P(")")
-local arg = P("(") * C((1-S("){"))^1) * P("{") * C((1-P("}"))^0) * P("}") * P(")")
-
-local pattern = (
- P("lua") * tag / ctxcore.luasetup
- + P("xml") * arg / ctxcore.setupwithargument -- or xmlw as xmlsetup has swapped arguments
- + (P("tex") * tag + str) / ctxcore.texsetup
- + sep^1
-)^1
-
-interfaces.implement {
- name = "autosetups",
- actions = function(str) lpegmatch(pattern,str) end,
- arguments = "string"
-}