[NTG-context] Passing and retrieveing a variable

Procházka Lukáš lpr at pontex.cz
Sat Jan 8 19:12:02 CET 2011


Hello,

thanks for detailing the observation -

On Fri, 07 Jan 2011 22:58:24 +0100, Hans Hagen <pragma at 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




More information about the ntg-context mailing list