Firstly, thanks by answer.
The second way is nice, but could be generic (e.g. save any variable in a namespace)?
--
Wagner Macedo
Am 05.01.2012 um 15:49 schrieb Wagner Macedo:Hello,
I'm relatively quite new to TeX world. This is my first message to list. I hope you understand me, English isn't my mother language.
I'm trying to use a variable set by \setvariable in Lua. I tried some combinations, based on manual but I couldn't succeed. The code below exemplifies what I wanted to do.
\starttext
\setvariable{namespace}{var}{Some context}
\ctxlua{
local s = context.getvariable("namespace", "var")
if s == "" then
...
else
...
end
}
\stoptext
I know that I can use some of \if* TeX commands, but coding in Lua is better to me.What you’re trying is not possible but there are other ways to check the content of the variable in Lua.\startluacodeuserdata = userdata or { }function userdata.checkvariable(variable)if variable == "" thencontext("EMPTY")elsecontext("NOT EMPTY")endend\stopluacode\setvariable{wagner}{name}{Wagner Macedo}\starttext
\ctxlua{userdata.checkvariable("\getvariable{wagner}{name}")}% This does only with \startlua or \ctxlua\startlualocal name = "\getvariable{wagner}{name}"if name == "" thencontext("No Text")elsename = "Name: " .. namecontext(name)end\stoplua\stoptextA different method is to save the \setvariables entries in a Lua table and check the entries of the table.\startluacodeuserdata = userdata or { }userdata.macedo = userdata.macedo or { }userdata.macedo.data = { }
function userdata.macedo.savevariables(variables)userdata.macedo.data = variablesendfunction userdata.macedo.checkvariables()local variables = userdata.macedo.data-- check for nameif variables.name == "" thencontext("Name: No name set")context.par()elsecontext("Name: "..variables.name)context.par()end-- check for addressif variables.address == "" thencontext("Address: No address set")context.par()elsecontext("Address: "..variables.address)context.par()endend\stopluacode\starttexdefinition SaveVariables\startluauserdata.macedo.savevariables{name = "\getvariable{macedo}{name}",address = "\getvariable{macedo}{address}",}\stoplua\stoptexdefinition\setvariables[macedo][set=\SaveVariables]\starttext\setvariables[macedo][name=Wagner Macedo]\ctxlua{userdata.macedo.checkvariables()}\setvariables[macedo][address=Secret]\ctxlua{userdata.macedo.checkvariables()}\stoptext
Wolfgang
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage : http://www.pragma-ade.nl / http://tex.aanhet.net
archive : http://foundry.supelec.fr/projects/contextrev/
wiki : http://contextgarden.net
___________________________________________________________________________________