From 438b065a2337ee587442f25ddc587c4762f4d0b0 Mon Sep 17 00:00:00 2001 From: Hans Hagen Date: Mon, 9 Sep 2019 14:55:35 +0200 Subject: 2019-09-09 13:52:00 --- tex/context/base/mkiv/mlib-scn.lua | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) (limited to 'tex/context/base/mkiv/mlib-scn.lua') 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 -- cgit v1.2.3