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 ___________________________________________________________________________________