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 <schuster.wolfg...@googlemail.com > 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 > > ___________________________________________________________________________________ >
___________________________________________________________________________________ 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 ___________________________________________________________________________________