Re: [NTG-context] need help comparing strings

2020-10-13 Thread Pablo Rodriguez
On 10/13/20 7:14 PM, Wolfgang Schuster wrote:
> Pablo Rodriguez schrieb am 13.10.2020 um 19:06:
>> [...]
>> In any case, I cannot compare to a number:
>>
>>\startluacode
>>  userdata = userdata or {}
>>  function userdata.numbersfname(name)
>>  return string.match(name, "%d+")
>>  end
>>\stopluacode
>>
>>\define[1]\numbersfname
>>{\cldcontext{userdata.numbersfname([==[#1]==])}}
>
> Untested:
>
> \defineexpandable[1]\numbersfname
>    {\cldcontext{userdata.numbersfname([==[#1]==])}}

I’m afraid it doesn’t work.

  \startluacode
userdata = userdata or {}
function userdata.numbersfname(name)
return string.match(name, "%d+")
end
  \stopluacode

  \defineexpandable[1]\numbersfname
{\cldcontext{userdata.numbersfname([==[#1]==])}}

  \starttext
  \numbersfname{abc123}

  \numbersfname{\env{fname}}
  \doifelse{\numbersfname{\env{fname}}}{123}{yes}{no}
  \stoptext

Just curious about what the difference might be.

Many thanks for your help,

Pablo
--
http://www.ousia.tk
___
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://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki : http://contextgarden.net
___


Re: [NTG-context] need help comparing strings

2020-10-13 Thread Pablo Rodriguez
On 10/13/20 5:33 PM, Pablo Rodriguez wrote:
> [...]
>   \starttext
>   \ctxlua{ d = [[\env{fname}]] }
>
>   d: \cldcontext{d}\\
>   \doifelse{\cldcontext{d:match("\letterpercent d+")}}
>   {123}{yes}{no}
>   \stoptext
> [...]
> 3. I’m trying this on a Linux box, but on Windows I would say that Lua
> variable "d" is empty.

Just for the record, this sample also works in Windows.

The Lua variable isn’t empty and the conditional outputs "yes".

Pablo
--
http://www.ousia.tk
___
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://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki : http://contextgarden.net
___


Re: [NTG-context] need help comparing strings

2020-10-13 Thread Wolfgang Schuster

Pablo Rodriguez schrieb am 13.10.2020 um 19:06:

On 10/13/20 5:54 PM, Aditya Mahajan wrote:

On Tue, 13 Oct 2020, Pablo Rodriguez wrote:

[...]
Could anyone explain me what I’m missing here?

Many thanks for your reply, Aditya.


I find it simpler to write macros where there is clean communicating
between tex and lua. For example:
[...]
 \define[1]\numbersfname
 {\cldcontext{userdata.numbersfname([==[#1]==])}}

This is the first time I see that way of wrapping an argument.

In any case, I cannot compare to a number:

   \startluacode
 userdata = userdata or {}
 function userdata.numbersfname(name)
 return string.match(name, "%d+")
 end
   \stopluacode

   \define[1]\numbersfname
   {\cldcontext{userdata.numbersfname([==[#1]==])}}


Untested:

\defineexpandable[1]\numbersfname
  {\cldcontext{userdata.numbersfname([==[#1]==])}}

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://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki : http://contextgarden.net
___


Re: [NTG-context] need help comparing strings

2020-10-13 Thread Pablo Rodriguez
On 10/13/20 6:14 PM, Wolfgang Schuster wrote:
> Pablo Rodriguez schrieb am 13.10.2020 um 17:33:
>> [...]
>> 2. Is there no Lua version of \getvariable{...}{...}?
>
> There is no need because everything is stored in a Lua table.
> [...]
>   local argumentlist  = document.arguments.arguments
>   local argumenttable = utilities.parsers.settings_to_hash(argumentlist)
>
>   context(argumenttable["fname"])

Many thanks for your reply, Wolfgang.

This is exactly what I need.

Many thanks for your help,

Pablo
--
http://www.ousia.tk
___
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://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki : http://contextgarden.net
___


Re: [NTG-context] need help comparing strings

2020-10-13 Thread Pablo Rodriguez
On 10/13/20 5:54 PM, Aditya Mahajan wrote:
> On Tue, 13 Oct 2020, Pablo Rodriguez wrote:
>> [...]
>> Could anyone explain me what I’m missing here?

Many thanks for your reply, Aditya.

> I find it simpler to write macros where there is clean communicating
> between tex and lua. For example:
> [...]
> \define[1]\numbersfname
> {\cldcontext{userdata.numbersfname([==[#1]==])}}

This is the first time I see that way of wrapping an argument.

In any case, I cannot compare to a number:

  \startluacode
userdata = userdata or {}
function userdata.numbersfname(name)
return string.match(name, "%d+")
end
  \stopluacode

  \define[1]\numbersfname
  {\cldcontext{userdata.numbersfname([==[#1]==])}}

  \starttext
  \numbersfname{abc123}

  \numbersfname{\env{fname}}
  \doifelse{\numbersfname{\env{fname}}}{123}{yes}{no}
  \stoptext

I don’t know why both strings don’t match.

Many thanks for your help,

Pablo
--
http://www.ousia.tk
___
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://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki : http://contextgarden.net
___


Re: [NTG-context] need help comparing strings

2020-10-13 Thread Wolfgang Schuster

Pablo Rodriguez schrieb am 13.10.2020 um 17:33:

Dear list,

I have the following sample:

   \starttext
   \def\numbersfname
 {\cldcontext{string.match([[\env{fname}]], "\letterpercent d+")}}
   \ctxlua{ c = context.getvariable("environment", "fname") or "a" }
   \ctxlua{ d = [[\env{fname}]] }

   tex: \numbersfname\\
   \doifelse{}
   {123}{yes}{no}\\
   c: \cldcontext{c}\\
   \doifelse{\cldcontext{c:match("\letterpercent d+")}}
   {123}{yes}{no}\\
   d: \cldcontext{d}\\
   \doifelse{\cldcontext{d:match("\letterpercent d+")}}
   {123}{yes}{no}
   \stoptext

For compilation, I run the command:

   context --purgeall --arguments=fname={abc123} test-file.tex

These things are failing:

1. I don’t know how to get \numbersfname equal to "123". I don’t know
what I’m doing wrong.

2. Is there no Lua version of \getvariable{...}{...}?


There is no need because everything is stored in a Lua table.


 begin example
\starttext

\startluacode

local argumentlist  = document.arguments.arguments
local argumenttable = utilities.parsers.settings_to_hash(argumentlist)

context(argumenttable["fname"])

\stopluacode

\stoptext
 end example


I tested the example with:

    context --arguments="fname=abc123" 


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://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki : http://contextgarden.net
___


Re: [NTG-context] need help comparing strings

2020-10-13 Thread Aditya Mahajan
On Tue, 13 Oct 2020, Pablo Rodriguez wrote:

> Dear list,
> 
> I have the following sample:
> 
>   \starttext
>   \def\numbersfname
> {\cldcontext{string.match([[\env{fname}]], "\letterpercent d+")}}
>   \ctxlua{ c = context.getvariable("environment", "fname") or "a" }
>   \ctxlua{ d = [[\env{fname}]] }
> 
>   tex: \numbersfname\\
>   \doifelse{}
>   {123}{yes}{no}\\
>   c: \cldcontext{c}\\
>   \doifelse{\cldcontext{c:match("\letterpercent d+")}}
>   {123}{yes}{no}\\
>   d: \cldcontext{d}\\
>   \doifelse{\cldcontext{d:match("\letterpercent d+")}}
>   {123}{yes}{no}
>   \stoptext
> 
> For compilation, I run the command:
> 
>   context --purgeall --arguments=fname={abc123} test-file.tex
> 
> These things are failing:
> 
> 1. I don’t know how to get \numbersfname equal to "123". I don’t know
> what I’m doing wrong.
> 
> 2. Is there no Lua version of \getvariable{...}{...}?
> 
> 3. I’m trying this on a Linux box, but on Windows I would say that Lua
> variable "d" is empty.
> 
> I need to get the number from \env{fname} and I don’t know what I’m
> missing. \doif is the way to test whether it’s right.
> 
> Could anyone explain me what I’m missing here?

I find it simpler to write macros where there is  clean communicating between 
tex and lua. For example:

\startluacode
  userdata = userdata or {}
  function userdata.numbersfname(name)
  return string.match(name, "%d+")
  end
\stopluacode

\define[1]\numbersfname
{\cldcontext{userdata.numbersfname([==[#1]==])}}

\starttext
\numbersfname{abc123}

\numbersfname{\env{fname}}
\stoptext


Aditya___
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://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki : http://contextgarden.net
___


[NTG-context] need help comparing strings

2020-10-13 Thread Pablo Rodriguez
Dear list,

I have the following sample:

  \starttext
  \def\numbersfname
{\cldcontext{string.match([[\env{fname}]], "\letterpercent d+")}}
  \ctxlua{ c = context.getvariable("environment", "fname") or "a" }
  \ctxlua{ d = [[\env{fname}]] }

  tex: \numbersfname\\
  \doifelse{}
  {123}{yes}{no}\\
  c: \cldcontext{c}\\
  \doifelse{\cldcontext{c:match("\letterpercent d+")}}
  {123}{yes}{no}\\
  d: \cldcontext{d}\\
  \doifelse{\cldcontext{d:match("\letterpercent d+")}}
  {123}{yes}{no}
  \stoptext

For compilation, I run the command:

  context --purgeall --arguments=fname={abc123} test-file.tex

These things are failing:

1. I don’t know how to get \numbersfname equal to "123". I don’t know
what I’m doing wrong.

2. Is there no Lua version of \getvariable{...}{...}?

3. I’m trying this on a Linux box, but on Windows I would say that Lua
variable "d" is empty.

I need to get the number from \env{fname} and I don’t know what I’m
missing. \doif is the way to test whether it’s right.

Could anyone explain me what I’m missing here?

Many thanks,

Pablo
--
http://www.ousia.tk
___
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://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki : http://contextgarden.net
___