Re: [NTG-context] Passing and retrieveing a variable
On 8-1-2011 7:12, Procházka Lukáš wrote: So, an earlier splitting may be performed by something like for a in document.arguments:gmatch("([^,]+)") do local k, v = a:match("(.*)=(.*)") document.arguments[k] = v end utilities.parsers.settings_to_hash( document.arguments.arg or "", document.arguments ) - Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | voip: 087 875 68 74 | www.pragma-ade.com | www.pragma-pod.nl - ___ 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 ___
Re: [NTG-context] Passing and retrieveing a variable
Hello, thanks for detailing the observation - On Fri, 07 Jan 2011 22:58:24 +0100, Hans Hagen wrote: On 7-1-2011 9:32, Procházka Lukáš Ing. - Pontex s. r. o. wrote: - Modes are accessible by tex.modes[]. indeed - - tex.modes are 'false' by default. I.e. they are not 'nil' but 'false', even if not specified on the command line. (tex.mode.__newindex predefined to this purpose?) indeed - There is no table of arguments or variables being passed by --arguments="ARG=arg" or by --variable="VAR=var" from the command line. indeed (--arguments is an old mechanism and mkii compatible) - All arguments passed to the command line are accessible by document.arguments. Unfortunately, when repeating an arg, only the last is accessible, e.g. context.exe t.mkiv --arguments="ARG1=arg1" --arguments="ARG2=arg2" indeed, so one can easily overload You're right, good feature. will cause that only (string) "ARG2=arg2" will be in document.arguments.arguments. as mentioned by someone already, use "a=1,b=2,c=3" - - That means also that not splitting to key-value pair is not performed by default (document.arguments.arguments is still "ARG2=arg2", no splitting to document.arguments.arguments.ARG2 to be "arg2" is not done). indeed, although they are split and assigned at the tex end So, an earlier splitting may be performed by something like for a in document.arguments:gmatch("([^,]+)") do local k, v = a:match("(.*)=(.*)") document.arguments[k] = v end Best regards, Lukas - Not only predefined options/switches, but all args passed by command line are accessible by document.arguments. I.e. it's possible to call context.exe t.mkiv --myvar=MYVAR right, but make sure to use a prefix so that there is no confusion (myvarone myvartwo etc) and later it's possible to get "MYVAR" from document.arguments.myvar. Let's check the call: context.exe t.mkiv --arguments=AAA=aaa --mode=MMM --arguments=BBB=bbb --myvar=MYVAR Hans ___ 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 ___
Re: [NTG-context] Passing and retrieveing a variable
On 7-1-2011 9:32, Procházka Lukáš Ing. - Pontex s. r. o. wrote: - Modes are accessible by tex.modes[]. indeed - - tex.modes are 'false' by default. I.e. they are not 'nil' but 'false', even if not specified on the command line. (tex.mode.__newindex predefined to this purpose?) indeed - There is no table of arguments or variables being passed by --arguments="ARG=arg" or by --variable="VAR=var" from the command line. indeed (--arguments is an old mechanism and mkii compatible) - All arguments passed to the command line are accessible by document.arguments. Unfortunately, when repeating an arg, only the last is accessible, e.g. context.exe t.mkiv --arguments="ARG1=arg1" --arguments="ARG2=arg2" indeed, so one can easily overload will cause that only (string) "ARG2=arg2" will be in document.arguments.arguments. as mentioned by someone already, use "a=1,b=2,c=3" - - That means also that not splitting to key-value pair is not performed by default (document.arguments.arguments is still "ARG2=arg2", no splitting to document.arguments.arguments.ARG2 to be "arg2" is not done). indeed, although they are split and assigned at the tex end - Not only predefined options/switches, but all args passed by command line are accessible by document.arguments. I.e. it's possible to call context.exe t.mkiv --myvar=MYVAR right, but make sure to use a prefix so that there is no confusion (myvarone myvartwo etc) and later it's possible to get "MYVAR" from document.arguments.myvar. Let's check the call: context.exe t.mkiv --arguments=AAA=aaa --mode=MMM --arguments=BBB=bbb --myvar=MYVAR Hans - Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | voip: 087 875 68 74 | www.pragma-ade.com | www.pragma-pod.nl - ___ 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 ___
Re: [NTG-context] Passing and retrieveing a variable
Procházka Lukáš Ing. - Pontex s. r. o. writes: > context.exe t.mkiv --arguments="ARG1=arg1" --arguments="ARG2=arg2" It's supposed to be --arguments="ARG1=arg1,ARG2=arg2" Peter ___ 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 ___
Re: [NTG-context] Passing and retrieveing a variable
2011/1/7 Procházka Lukáš Ing. - Pontex s. r. o. : > Hello, > > I created a testing file which tests existence and type of > (tex|context|document).(modes|arguments|variables) by Lua - see the > attachments. > > It seems that: > > - Modes are accessible by tex.modes[]. > > - - tex.modes are 'false' by default. I.e. they are not 'nil' but 'false', > even if not specified on the command line. (tex.mode.__newindex predefined > to this purpose?) > > - There is no table of arguments or variables being passed by > --arguments="ARG=arg" or by --variable="VAR=var" from the command line. > > - All arguments passed to the command line are accessible by > document.arguments. Unfortunately, when repeating an arg, only the last is > accessible, e.g. > > context.exe t.mkiv --arguments="ARG1=arg1" --arguments="ARG2=arg2" > > will cause that only (string) "ARG2=arg2" will be in > document.arguments.arguments. > > - - That means also that not splitting to key-value pair is not performed by > default (document.arguments.arguments is still "ARG2=arg2", no splitting to > document.arguments.arguments.ARG2 to be "arg2" is not done). > > - Not only predefined options/switches, but all args passed by command line > are accessible by document.arguments. I.e. it's possible to call > > context.exe t.mkiv --myvar=MYVAR > > and later it's possible to get "MYVAR" from document.arguments.myvar. > > Let's check the call: > > context.exe t.mkiv --arguments=AAA=aaa --mode=MMM --arguments=BBB=bbb > --myvar=MYVAR > > Best regards, > > Lukas > > > On Wed, 05 Jan 2011 21:11:51 +0100, Peter Münster wrote: > >> Procházka Lukáš writes: >> >>> I'd need to pass a variable to Ctx and to retrieve it inside a >>> compiled document - via Ctx itself and also by Lua. >> >> Hello, >> >> % cmd-line: context --arguments=testvar=my-value test >> \starttext >> value of testvar: \env{testvar} >> >> with lua: \ctxlua{tex.print(document.arguments.arguments)} >> \stoptext >> >> There is perhaps a nicer solution in lua. >> >> Peter >> > > > -- > Ing. Lukáš Procházka [mailto:l...@pontex.cz] > Pontex s. r. o. [mailto:pon...@pontex.cz] [http://www.pontex.cz] > Bezová 1658 > 147 14 Praha 4 > > Tel: +420 244 062 238 > Fax: +420 244 461 038 > ___ > 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 > ___ > > Maybe Data Description can here here http://www.lua.org/pil/10.1.html -- luigi ___ 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 ___
Re: [NTG-context] Passing and retrieveing a variable
Hello, I created a testing file which tests existence and type of (tex|context|document).(modes|arguments|variables) by Lua - see the attachments. It seems that: - Modes are accessible by tex.modes[]. - - tex.modes are 'false' by default. I.e. they are not 'nil' but 'false', even if not specified on the command line. (tex.mode.__newindex predefined to this purpose?) - There is no table of arguments or variables being passed by --arguments="ARG=arg" or by --variable="VAR=var" from the command line. - All arguments passed to the command line are accessible by document.arguments. Unfortunately, when repeating an arg, only the last is accessible, e.g. context.exe t.mkiv --arguments="ARG1=arg1" --arguments="ARG2=arg2" will cause that only (string) "ARG2=arg2" will be in document.arguments.arguments. - - That means also that not splitting to key-value pair is not performed by default (document.arguments.arguments is still "ARG2=arg2", no splitting to document.arguments.arguments.ARG2 to be "arg2" is not done). - Not only predefined options/switches, but all args passed by command line are accessible by document.arguments. I.e. it's possible to call context.exe t.mkiv --myvar=MYVAR and later it's possible to get "MYVAR" from document.arguments.myvar. Let's check the call: context.exe t.mkiv --arguments=AAA=aaa --mode=MMM --arguments=BBB=bbb --myvar=MYVAR Best regards, Lukas On Wed, 05 Jan 2011 21:11:51 +0100, Peter Münster wrote: Procházka Lukáš writes: I'd need to pass a variable to Ctx and to retrieve it inside a compiled document - via Ctx itself and also by Lua. Hello, % cmd-line: context --arguments=testvar=my-value test \starttext value of testvar: \env{testvar} with lua: \ctxlua{tex.print(document.arguments.arguments)} \stoptext There is perhaps a nicer solution in lua. Peter -- Ing. Lukáš Procházka [mailto:l...@pontex.cz] Pontex s. r. o. [mailto:pon...@pontex.cz] [http://www.pontex.cz] Bezová 1658 147 14 Praha 4 Tel: +420 244 062 238 Fax: +420 244 461 038 t.mkiv Description: Binary data t.pdf Description: Adobe PDF document ___ 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 ___
Re: [NTG-context] Passing and retrieveing a variable
Hello, thanks, - On Wed, 05 Jan 2011 21:41:13 +0100, Wolfgang Schuster wrote: Am 05.01.2011 um 20:22 schrieb Procházka Lukáš: Hello, I'd need to pass a variable to Ctx and to retrieve it inside a compiled document - via Ctx itself and also by Lua. Something like modes; but modes allow just to check whether they are on or off. I'd need something like this: You can check modes in Lua: context --arguments="size=small" --mode=print test.tex And can I check a variable (argument) in Lua in a similar way? --- \starttext Print mode: \doifmodeelse{print}{yes}{no} \startluacode if tex.modes['print'] then context("Print mode is enabled") else context("Print mode is disabled") end -- Something like this: >> if tex.arguments['size'] == "small" then -- Or: 'tex.variables["size"] == "small"' -- Or: 'document.arguments["size"] == "small"' context("Small size") end -- \stopluacode \doifenvelse{size} {\processaction [\env{size}] [ small=>Small size, medium=>Medium size, big=>Big size, unknown=>Other size: \env{size}]} {No value “size”} \stoptext --- If the passed argument has a NUMBER value, should it be checked against a number value or a string - so what of the following should be right: context --arguments="size=1" test.tex if tex.arguments['size'] == "1" then ... Or: if tex.arguments['size'] == 1 then ... Best regards, Lukas -- Ing. Lukáš Procházka [mailto:l...@pontex.cz] Pontex s. r. o. [mailto:pon...@pontex.cz] [http://www.pontex.cz] Bezová 1658 147 14 Praha 4 Tel: +420 244 062 238 Fax: +420 244 461 038 ___ 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 ___
Re: [NTG-context] Passing and retrieveing a variable
Am 05.01.2011 um 20:22 schrieb Procházka Lukáš: > Hello, > > I'd need to pass a variable to Ctx and to retrieve it inside a compiled > document - via Ctx itself and also by Lua. Something like modes; but modes > allow just to check whether they are on or off. I'd need something like this: You can check modes in Lua: context --arguments="size=small" --mode=print test.tex \starttext Print mode: \doifmodeelse{print}{yes}{no} \startluacode if tex.modes['print'] then context("Print mode is enabled") else context("Print mode is disabled") end \stopluacode \doifenvelse{size} {\processaction [\env{size}] [ small=>Small size, medium=>Medium size, big=>Big size, unknown=>Other size: \env{size}]} {No value “size”} \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 ___
Re: [NTG-context] Passing and retrieveing a variable
Procházka Lukáš writes: > I'd need to pass a variable to Ctx and to retrieve it inside a > compiled document - via Ctx itself and also by Lua. Hello, % cmd-line: context --arguments=testvar=my-value test \starttext value of testvar: \env{testvar} with lua: \ctxlua{tex.print(document.arguments.arguments)} \stoptext There is perhaps a nicer solution in lua. Peter -- Contact information: http://pmrb.free.fr/contact/ ___ 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 ___
[NTG-context] Passing and retrieveing a variable
Hello, I'd need to pass a variable to Ctx and to retrieve it inside a compiled document - via Ctx itself and also by Lua. Something like modes; but modes allow just to check whether they are on or off. I'd need something like this: Calling context.exe: --- call context.exe test.mkiv --mode:MyMode --variable MyVariable=AAA --- And test.mkiv: --- \starttext Hello \doifmode{MyMode}{Being in MyMode} \ifvariableequal{MyVariable}{AAA}{MyVariable is \MyVariable} % Something like this \startluacode if context.variables.MyVariable == "AAA" then context("MyVariable is defined.") -- Something like this end \stopluacode \stoptext --- Simply said, I'd need to provide a conditional (or: dependent) compilation of the input file. How to handle this? Best regards, Lukas ___ 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 ___