summaryrefslogtreecommitdiff
path: root/tex/context/base/mkxl/mlib-scn.lmt
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/mkxl/mlib-scn.lmt')
-rw-r--r--tex/context/base/mkxl/mlib-scn.lmt115
1 files changed, 67 insertions, 48 deletions
diff --git a/tex/context/base/mkxl/mlib-scn.lmt b/tex/context/base/mkxl/mlib-scn.lmt
index e68abf587..786ec2631 100644
--- a/tex/context/base/mkxl/mlib-scn.lmt
+++ b/tex/context/base/mkxl/mlib-scn.lmt
@@ -258,7 +258,6 @@ local function getparameters()
setmetatableindex(parameters,presets)
end
namespaces[namespace] = parameters
- --
end
local function applyparameters()
@@ -279,8 +278,9 @@ local function applyparameters()
end
namespaces[namespace] = parameters
-- till here
- mpprint(action)
+ -- mpprint(action)
namespaces = saved
+ return action
end
local knownparameters = { }
@@ -398,11 +398,12 @@ local function getparameter()
end
v = vl
end
- if v == nil then
- return injectnumeric(0)
- else
- return get(v)
- end
+-- if v == nil then
+-- return injectnumeric(0)
+-- else
+-- return get(v)
+-- end
+ return v or 0
end
local function hasparameter()
@@ -423,11 +424,12 @@ local function hasparameter()
end
v = vl
end
- if v == nil then
- return injectboolean(false)
- else
- return injectboolean(true)
- end
+ -- if v == nil then
+ -- return injectboolean(false)
+ -- else
+ -- return injectboolean(true)
+ -- end
+ return v ~= nil
end
local function hasoption()
@@ -439,7 +441,8 @@ local function hasoption()
local l = list[i]
local vl = v[l]
if vl == nil then
- return injectboolean(false)
+ -- return injectboolean(false)
+ return false
end
v = vl
end
@@ -450,18 +453,21 @@ local function hasoption()
-- no caching .. slow anyway
local o = list[n]
if v == o then
- return injectboolean(true)
+ -- return injectboolean(true)
+ return true
end
for vv in gmatch(v,"[^%s,]+") do
for oo in gmatch(o,"[^%s,]+") do
if vv == oo then
- return injectboolean(true)
+ -- return injectboolean(true)
+ return true
end
end
end
end
end
- return injectboolean(false)
+ -- return injectboolean(false)
+ return false
end
local function getparameterdefault()
@@ -478,7 +484,8 @@ local function getparameterdefault()
end
end
if vl == nil then
- return injectnumeric(0)
+ -- return injectnumeric(0)
+ return 0
else
if type(vl) == "string" then
local td = type(list[n])
@@ -488,7 +495,8 @@ local function getparameterdefault()
vl = vl == "true"
end
end
- return get(vl)
+ -- return get(vl)
+ return vl
end
else
for i=1,n-1 do
@@ -498,7 +506,8 @@ local function getparameterdefault()
if type(l) == "number" then
vl = v[1]
if vl == nil then
- return get(list[n])
+ -- return get(list[n])
+ return list[n]
end
else
local last = list[n]
@@ -514,26 +523,31 @@ local function getparameterdefault()
local l = list[i]
local vl = v[l]
if vl == nil then
- return injectnumeric(0)
+ -- return injectnumeric(0)
+ return 0
end
v = vl
end
- if v == nil then
- return injectnumeric(0)
- else
- return get(v)
- end
+ -- if v == nil then
+ -- return injectnumeric(0)
+ -- else
+ -- return get(v)
+ -- end
+ return v or 0
end
- return injectnumeric(0)
+ -- return injectnumeric(0)
+ return 0
else
- return get(last)
+ -- return get(last)
+ return last
end
end
end
v = vl
end
if v == nil then
- return get(list[n])
+ -- return get(list[n])
+ return list[n]
else
if type(v) == "string" then
local td = type(list[n])
@@ -543,7 +557,8 @@ local function getparameterdefault()
v = v == "true"
end
end
- return get(v)
+ -- return get(v)
+ return v
end
end
end
@@ -557,7 +572,8 @@ local function getparametercount()
break
end
end
- return injectnumeric(type(v) == "table" and #v or 0)
+ -- return injectnumeric(type(v) == "table" and #v or 0)
+ return type(v) == "table" and #v or 0
end
local function getmaxparametercount()
@@ -588,7 +604,8 @@ local function getmaxparametercount()
end
end
- return injectnumeric(n)
+ -- return injectnumeric(n)
+ return n
end
local validconnectors = {
@@ -694,22 +711,24 @@ function metapost.scanparameters()
end
local registerscript = metapost.registerscript
-
-registerscript("getparameters", getparameters)
-registerscript("applyparameters", applyparameters)
-registerscript("presetparameters", presetparameters)
-registerscript("hasparameter", hasparameter)
-registerscript("hasoption", hasoption)
-registerscript("getparameter", getparameter)
-registerscript("getparameterdefault", getparameterdefault)
-registerscript("getparametercount", getparametercount)
-registerscript("getmaxparametercount",getmaxparametercount)
-registerscript("getparameterpath", getparameterpath)
-registerscript("getparameterpen", getparameterpen)
-registerscript("getparametertext", getparametertext)
---------------("getparameteroption", getparameteroption)
-registerscript("pushparameters", pushparameters)
-registerscript("popparameters", popparameters)
+local registerdirect = metapost.registerdirect
+local registertokens = metapost.registertokens
+
+registerdirect("getparameters", getparameters) -- nothing
+registertokens("applyparameters", applyparameters) -- action : todo "token"
+registerdirect("presetparameters", presetparameters) -- nothing
+registerdirect("hasparameter", hasparameter) -- boolean
+registerdirect("hasoption", hasoption) -- boolean
+registerdirect("getparameter", getparameter) -- whatever
+registerdirect("getparameterdefault", getparameterdefault) -- whatever
+registerdirect("getparametercount", getparametercount) -- numeric
+registerdirect("getmaxparametercount",getmaxparametercount) -- numeric
+registerscript("getparameterpath", getparameterpath) -- tricky
+registerscript("getparameterpen", getparameterpen) -- tricky
+registerscript("getparametertext", getparametertext) -- tricky
+--------direct("getparameteroption", getparameteroption) -- boolean
+registerdirect("pushparameters", pushparameters) -- nothing
+registerdirect("popparameters", popparameters) -- nothing
function metapost.getparameter(list)
local n = #list
@@ -735,7 +754,7 @@ end
-- goodies
-registerscript("definecolor", function()
+registerdirect("definecolor", function()
scantoken() -- we scan the semicolon
local s = get_parameters()
attributes.colors.defineprocesscolordirect(s)