Hi,
\installcommandhandler nicely provides (among others) \define<name> and \setup<name> commands. Thus it is easy to provide a key with \setup...[key=value] and to read the value of such a key with \<name>parameter{key}.
My question is: How do I read the value of a key defined with \setup...[key=value] on the lua side? If I use
context.<name>parameter("key")
then the value of key is printed directly. I want to be able to read that value and use it in lua with something like
myvariable = context.?whatfunction?("key")
Here is some example code:
\unprotect
\startluacode
function myfun(parameters,content)
context("From lua: Parameters: ")
context(parameters)
context.elemparameter("gkey") -- directly prints the parameter
context.par()
end
\stopluacode
\installnamespace{elem}
\installcommandhandler \????elem {elem} \????elem
\appendtoks
\setuevalue{\currentelem}{\elem_cmd{\currentelem}}%
\to \everydefineelem
\unexpanded\def\elem_cmd#environment{%
\edef\currentelem{#environment}%
\dosingleempty\elem_cmd_parameters}
\def\elem_cmd_parameters[#parameters]#content{%
\setupcurrentelem[#parameters]
From \TeX\: Parameters: key=\elemparameter{key}, gkey=\elemparameter{gkey}\par
\ctxlua{myfun(\!!bs#parameters\!!es,\!!bs\normalunexpanded{#content}\!!es)}
}
\defineelem[base]
\setupelem[gkey=gval]
\protect
\starttext
\base[key=val]{Hello}
\stoptext
Thank you for any feedback,
Christoph Reller