Oh, that's nice, but the \setupsomething part is still missing, i.e. I still want to be able to invoke \somethingparameter{...}. My question is about merging two tasks in one in a better way than the one I proposed, if possible. Thanks for the help. Jairo El mar, 20 de abr. de 2021 a la(s) 02:00, Hans Hagen (j.hagen@xs4all.nl) escribió:
On 4/20/2021 4:23 AM, Jairo A. del Rio wrote:
Hi, list! I hope my example shows clearly enough what I intend to do:
\startluacode
userdata = userdata or {}
userdata.mydata = {}
local function registermydata(data,...)
table.insert(userdata.mydata, data)
end
interfaces.implement{
name = "registermydata",
arguments = "2 strings",
actions = registermydata
}
\stopluacode
\unprotect
\def\mysetups[#1]%
{\getdummyparameters[#1]%
\processassignmentlist[#1]\clf_registermydata}
\protect
\starttext
\mysetups[love=nice,hate=awful]%
\dummyparameter{love}
\cldcontext{userdata.mydata[2]}
\stoptext
What I want to know is if there's a less hackish way to pass keys (yep, only keys, not values) to Lua using \getdummyparameters (actually I'm using an user-defined \setupsomething, but it's more or less the same) and \processassignmentlist. Is it possible, for instance, to automatically pass a key to Lua when it's set in \setupsomething? Thanks in advance.
Jairo
PS: Sorry if I missed something in the test suite again It's probably somewhere ...
\startluacode
userdata = userdata or { } userdata.mydataA = { } userdata.mydataB = { }
interfaces.implement { name = "RegisterMyDataA", public = true, arguments = { "hash" }, actions = function(t) for k, v in pairs(t) do table.insert(userdata.mydataA,k) end end, }
interfaces.implement { name = "RegisterMyDataB", public = true, arguments = { "array" }, actions = function(t) for k, v in ipairs(t) do table.insert(userdata.mydataB,string.split(v,"=")[1]) end end, }
\stopluacode
\unprotect
\protect
\starttext
\RegisterMyDataA[love=nice,hate=awful]% \RegisterMyDataB[love=nice,hate=awful]%
\cldcontext{userdata.mydataA[2]} % unordered \cldcontext{userdata.mydataB[1]} % ordered
\stoptext
----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl -----------------------------------------------------------------