Firstly, thanks by answer.
The second way is nice, but could be generic (e.g. save any variable in a
namespace)?
--
Wagner Macedo
On 5 January 2012 13:04, Wolfgang Schuster wrote: 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. \startluacode userdata = userdata or { } function userdata.checkvariable(variable)
if variable == "" then
context("EMPTY")
else
context("NOT EMPTY")
end
end \stopluacode \setvariable{wagner}{name}{Wagner Macedo} \starttext \ctxlua{userdata.checkvariable("\getvariable{wagner}{name}")} % This does only with \startlua or \ctxlua \startlua local name = "\getvariable{wagner}{name}" if name == "" then
context("No Text")
else
name = "Name: " .. name
context(name)
end \stoplua \stoptext A different method is to save the \setvariables entries in a Lua table and
check the entries of the table. \startluacode userdata = userdata or { }
userdata.macedo = userdata.macedo or { } userdata.macedo.data = { } function userdata.macedo.savevariables(variables)
userdata.macedo.data = variables
end function userdata.macedo.checkvariables()
local variables = userdata.macedo.data
-- check for name
if variables.name == "" then
context("Name: No name set")
context.par()
else
context("Name: "..variables.name)
context.par()
end
-- check for address
if variables.address == "" then
context("Address: No address set")
context.par()
else
context("Address: "..variables.address)
context.par()
end
end \stopluacode \starttexdefinition SaveVariables
\startlua
userdata.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 ___________________________________________________________________________________