* Passing and retrieveing a variable @ 2011-01-05 19:22 Procházka Lukáš 2011-01-05 20:11 ` Peter Münster 2011-01-05 20:41 ` Wolfgang Schuster 0 siblings, 2 replies; 10+ messages in thread From: Procházka Lukáš @ 2011-01-05 19:22 UTC (permalink / raw) To: ConTeXt 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 ___________________________________________________________________________________ ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Passing and retrieveing a variable 2011-01-05 19:22 Passing and retrieveing a variable Procházka Lukáš @ 2011-01-05 20:11 ` Peter Münster 2011-01-07 8:32 ` Procházka Lukáš Ing. - Pontex s. r. o. 2011-01-05 20:41 ` Wolfgang Schuster 1 sibling, 1 reply; 10+ messages in thread From: Peter Münster @ 2011-01-05 20:11 UTC (permalink / raw) To: mailing list for ConTeXt users Procházka Lukáš <lpr@pontex.cz> 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 ___________________________________________________________________________________ ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Passing and retrieveing a variable 2011-01-05 20:11 ` Peter Münster @ 2011-01-07 8:32 ` Procházka Lukáš Ing. - Pontex s. r. o. 2011-01-07 8:48 ` luigi scarso ` (2 more replies) 0 siblings, 3 replies; 10+ messages in thread From: Procházka Lukáš Ing. - Pontex s. r. o. @ 2011-01-07 8:32 UTC (permalink / raw) To: mailing list for ConTeXt users [-- Attachment #1: Type: text/plain, Size: 2170 bytes --] 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[<a-mode>]. - - 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 <pmlists@free.fr> wrote: > Procházka Lukáš <lpr@pontex.cz> 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:LPr@pontex.cz] Pontex s. r. o. [mailto:pontex@pontex.cz] [http://www.pontex.cz] Bezová 1658 147 14 Praha 4 Tel: +420 244 062 238 Fax: +420 244 461 038 [-- Attachment #2: t.mkiv --] [-- Type: application/octet-stream, Size: 1372 bytes --] \starttext Hello \startluacode context.hairline() context("tex"); context(true) context(type(tex)) context(type(tex.modes)) context(type(tex.arguments)) context(type(tex.variables)) context.hairline() context("context"); context(true) context(type(context)) context(type(context.modes)) context(type(context.arguments)) context(type(context.variables)) context.hairline() context("document"); context(true) context(type(document)) context(type(document.modes)) context(type(document.arguments)) context(type(document.variables)) context.hairline() context("tex.modes"); context(true) context(tostring(tex.modes["MMM"])); context(true) context.hairline() context("document.arguments"); context(true) for k, v in pairs(document.arguments) do context(k .. " = " .. tostring(v)); context(true) end context.hairline() context("tex"); context(true) for k, v in pairs(tex) do --context(k .. " = " .. tostring(v)); context(true) end context.hairline() context("document"); context(true) for k, v in pairs(document) do --context(k .. " = " .. tostring(v)); context(true) end \stopluacode \stoptext [-- Attachment #3: t.pdf --] [-- Type: application/pdf, Size: 8326 bytes --] [-- Attachment #4: Type: text/plain, Size: 486 bytes --] ___________________________________________________________________________________ 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 ___________________________________________________________________________________ ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Passing and retrieveing a variable 2011-01-07 8:32 ` Procházka Lukáš Ing. - Pontex s. r. o. @ 2011-01-07 8:48 ` luigi scarso 2011-01-07 9:15 ` Peter Münster 2011-01-07 21:58 ` Hans Hagen 2 siblings, 0 replies; 10+ messages in thread From: luigi scarso @ 2011-01-07 8:48 UTC (permalink / raw) To: mailing list for ConTeXt users 2011/1/7 Procházka Lukáš Ing. - Pontex s. r. o. <LPr@pontex.cz>: > 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[<a-mode>]. > > - - 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 <pmlists@free.fr> wrote: > >> Procházka Lukáš <lpr@pontex.cz> 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:LPr@pontex.cz] > Pontex s. r. o. [mailto:pontex@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 ___________________________________________________________________________________ ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Passing and retrieveing a variable 2011-01-07 8:32 ` Procházka Lukáš Ing. - Pontex s. r. o. 2011-01-07 8:48 ` luigi scarso @ 2011-01-07 9:15 ` Peter Münster 2011-01-07 21:58 ` Hans Hagen 2 siblings, 0 replies; 10+ messages in thread From: Peter Münster @ 2011-01-07 9:15 UTC (permalink / raw) To: mailing list for ConTeXt users Procházka Lukáš Ing. - Pontex s. r. o. <LPr@pontex.cz> 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 ___________________________________________________________________________________ ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Passing and retrieveing a variable 2011-01-07 8:32 ` Procházka Lukáš Ing. - Pontex s. r. o. 2011-01-07 8:48 ` luigi scarso 2011-01-07 9:15 ` Peter Münster @ 2011-01-07 21:58 ` Hans Hagen 2011-01-08 18:12 ` Procházka Lukáš 2 siblings, 1 reply; 10+ messages in thread From: Hans Hagen @ 2011-01-07 21:58 UTC (permalink / raw) To: mailing list for ConTeXt users On 7-1-2011 9:32, Procházka Lukáš Ing. - Pontex s. r. o. wrote: > - Modes are accessible by tex.modes[<a-mode>]. 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 ___________________________________________________________________________________ ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Passing and retrieveing a variable 2011-01-07 21:58 ` Hans Hagen @ 2011-01-08 18:12 ` Procházka Lukáš 2011-01-09 21:03 ` Hans Hagen 0 siblings, 1 reply; 10+ messages in thread From: Procházka Lukáš @ 2011-01-08 18:12 UTC (permalink / raw) To: ConTeXt Hello, thanks for detailing the observation - On Fri, 07 Jan 2011 22:58:24 +0100, Hans Hagen <pragma@wxs.nl> wrote: > On 7-1-2011 9:32, Procházka Lukáš Ing. - Pontex s. r. o. wrote: > >> - Modes are accessible by tex.modes[<a-mode>]. > > 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 ___________________________________________________________________________________ ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Passing and retrieveing a variable 2011-01-08 18:12 ` Procházka Lukáš @ 2011-01-09 21:03 ` Hans Hagen 0 siblings, 0 replies; 10+ messages in thread From: Hans Hagen @ 2011-01-09 21:03 UTC (permalink / raw) To: mailing list for ConTeXt users 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 ___________________________________________________________________________________ ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Passing and retrieveing a variable 2011-01-05 19:22 Passing and retrieveing a variable Procházka Lukáš 2011-01-05 20:11 ` Peter Münster @ 2011-01-05 20:41 ` Wolfgang Schuster 2011-01-06 7:39 ` Procházka Lukáš Ing. - Pontex s. r. o. 1 sibling, 1 reply; 10+ messages in thread From: Wolfgang Schuster @ 2011-01-05 20:41 UTC (permalink / raw) To: mailing list for ConTeXt users 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 ___________________________________________________________________________________ ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Passing and retrieveing a variable 2011-01-05 20:41 ` Wolfgang Schuster @ 2011-01-06 7:39 ` Procházka Lukáš Ing. - Pontex s. r. o. 0 siblings, 0 replies; 10+ messages in thread From: Procházka Lukáš Ing. - Pontex s. r. o. @ 2011-01-06 7:39 UTC (permalink / raw) To: mailing list for ConTeXt users Hello, thanks, - On Wed, 05 Jan 2011 21:41:13 +0100, Wolfgang Schuster <schuster.wolfgang@googlemail.com> 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:LPr@pontex.cz] Pontex s. r. o. [mailto:pontex@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 ___________________________________________________________________________________ ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2011-01-09 21:03 UTC | newest] Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2011-01-05 19:22 Passing and retrieveing a variable Procházka Lukáš 2011-01-05 20:11 ` Peter Münster 2011-01-07 8:32 ` Procházka Lukáš Ing. - Pontex s. r. o. 2011-01-07 8:48 ` luigi scarso 2011-01-07 9:15 ` Peter Münster 2011-01-07 21:58 ` Hans Hagen 2011-01-08 18:12 ` Procházka Lukáš 2011-01-09 21:03 ` Hans Hagen 2011-01-05 20:41 ` Wolfgang Schuster 2011-01-06 7:39 ` Procházka Lukáš Ing. - Pontex s. r. o.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).