diff options
author | Hans Hagen <pragma@wxs.nl> | 2019-09-09 14:55:35 +0200 |
---|---|---|
committer | Context Git Mirror Bot <phg@phi-gamma.net> | 2019-09-09 14:55:35 +0200 |
commit | 438b065a2337ee587442f25ddc587c4762f4d0b0 (patch) | |
tree | d18c8f7e51dd7e96b8e774f94d3f8862a6c38f73 /tex/context/base/mkiv/mlib-scn.lua | |
parent | fca2d946bc4d3ef525c3a2c9016e3b88d6d09812 (diff) | |
download | context-438b065a2337ee587442f25ddc587c4762f4d0b0.tar.gz |
2019-09-09 13:52:00
Diffstat (limited to 'tex/context/base/mkiv/mlib-scn.lua')
-rw-r--r-- | tex/context/base/mkiv/mlib-scn.lua | 37 |
1 files changed, 36 insertions, 1 deletions
diff --git a/tex/context/base/mkiv/mlib-scn.lua b/tex/context/base/mkiv/mlib-scn.lua index a7c1924eb..ec0f7397b 100644 --- a/tex/context/base/mkiv/mlib-scn.lua +++ b/tex/context/base/mkiv/mlib-scn.lua @@ -424,6 +424,40 @@ local function hasparameter() end end +local function hasoption() + local list, n = collectnames() + if n > 1 then + local v = namespaces + if n > 2 then + for i=1,n-1 do + local l = list[i] + local vl = v[l] + if vl == nil then + return mpboolean(false) + end + v = vl + end + else + v = v[list[1]] + end + if type(v) == "string" then + -- no caching .. slow anyway + local o = list[n] + if v == o then + return mpboolean(true) + end + for vv in gmatch(v,"[^%s,]+") do + for oo in gmatch(o,"[^%s,]+") do + if vv == oo then + return mpboolean(true) + end + end + end + end + end + return mpboolean(false) +end + local function getparameterdefault() local list, n = collectnames() local v = namespaces @@ -620,6 +654,7 @@ metapost.registerscript("getparameters", getparameters) metapost.registerscript("applyparameters", applyparameters) metapost.registerscript("presetparameters", presetparameters) metapost.registerscript("hasparameter", hasparameter) +metapost.registerscript("hasoption", hasoption) metapost.registerscript("getparameter", getparameter) metapost.registerscript("getparameterdefault", getparameterdefault) metapost.registerscript("getparametercount", getparametercount) @@ -645,7 +680,7 @@ function metapost.getparameter(list) end function metapost.getparameterset(namespace) - return namespaces[namespace] + return namespace and namespaces[namespace] or namespaces end -- goodies |