ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
* \doifelse not working, \doiftextelse breaking
@ 2020-10-09 13:58 Pablo Rodriguez
  2020-10-09 14:08 ` Wolfgang Schuster
  0 siblings, 1 reply; 5+ messages in thread
From: Pablo Rodriguez @ 2020-10-09 13:58 UTC (permalink / raw)
  To: mailing list for ConTeXt users

Dear list,

I have the following sample:

    \starttext
    \startluacode
    function document.starts_with(str, start)
      if str:sub(1, #start) == start then
        context(start)
      end
    end
    \stopluacode

    \unexpanded\def\startswith[#1][#2]
        {\cldcontext{document.starts_with("#1", "#2")}}

    \startswith[getjobid764572121][getjobid]

    yes:
    \doifelse{\startswith[getjobid764572121][getjobid]}{getjobid}
        {yes}{no}

    no:
    \doifelse{\startswith[getjobid764572121][getjobid]}{}
        {yes}{no}

    %% \doiftextelse{\startswith[getjobid764572121][getjobid]}
        % {yes}{no}
    \stoptext

I don’t know why comparing doesn’t work with \doifelse.

I’m surprised that \doiftextelse breaks when \startswidth if inside.

How could i make \startswith work inside \doiftext?

Or how could I catch positives when command contents start with a given
string?

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
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: \doifelse not working, \doiftextelse breaking
  2020-10-09 13:58 \doifelse not working, \doiftextelse breaking Pablo Rodriguez
@ 2020-10-09 14:08 ` Wolfgang Schuster
  2020-10-09 14:31   ` Pablo Rodriguez
  0 siblings, 1 reply; 5+ messages in thread
From: Wolfgang Schuster @ 2020-10-09 14:08 UTC (permalink / raw)
  To: mailing list for ConTeXt users; +Cc: Pablo Rodriguez



Pablo Rodriguez schrieb am 09.10.2020 um 15:58:
> Dear list,
> 
> I have the following sample:
> 
>      \starttext
>      \startluacode
>      function document.starts_with(str, start)
>        if str:sub(1, #start) == start then
>          context(start)
>        end
>      end
>      \stopluacode
> 
>      \unexpanded\def\startswith[#1][#2]
>          {\cldcontext{document.starts_with("#1", "#2")}}


You need a % at the end of the definition, otherwise TeX expects a space 
after the second argument to end the command.

\unexpanded\def\startswith[#1][#2]%
   {...}


To improve your command and allow a space between both arguments you can use

\unexpanded\def\startswith
   {\dodoubleargument\dostartswith}

\def\dostartswith[#1][#2]%
   {...}

or just add a dummy parameter and use #1 and #3 to pass the arguments

\unexpanded\def\startswith[#1]#2[#3]%
   {...}


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
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: \doifelse not working, \doiftextelse breaking
  2020-10-09 14:08 ` Wolfgang Schuster
@ 2020-10-09 14:31   ` Pablo Rodriguez
  2020-10-09 15:10     ` Wolfgang Schuster
  0 siblings, 1 reply; 5+ messages in thread
From: Pablo Rodriguez @ 2020-10-09 14:31 UTC (permalink / raw)
  To: ntg-context

On 10/9/20 4:08 PM, Wolfgang Schuster wrote:
> [..]
> You need a % at the end of the definition, otherwise TeX expects a space
> after the second argument to end the command.
>
> \unexpanded\def\startswith[#1][#2]%
>    {...}

Many thanks for your ultra-fast reply, Wolfgang.

Now I see muy mistake. In my previous command definitions with two
arguments, the opening brace was right after the second argument.

> To improve your command and allow a space between both arguments you can use
>
> \unexpanded\def\startswith
>    {\dodoubleargument\dostartswith}
>
> \def\dostartswith[#1][#2]%
>    {...}

Now I see with \dosingleargument, \dodoubleargument and
\dotripleargument are there.

Which are the improvements to the command added by \do*argument?

> or just add a dummy parameter and use #1 and #3 to pass the arguments
>
> \unexpanded\def\startswith[#1]#2[#3]%
>    {...}

This is shorter, but it looks to creepy (even for my code).

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
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: \doifelse not working, \doiftextelse breaking
  2020-10-09 14:31   ` Pablo Rodriguez
@ 2020-10-09 15:10     ` Wolfgang Schuster
  2020-10-09 19:24       ` Pablo Rodriguez
  0 siblings, 1 reply; 5+ messages in thread
From: Wolfgang Schuster @ 2020-10-09 15:10 UTC (permalink / raw)
  To: mailing list for ConTeXt users, Pablo Rodriguez

Pablo Rodriguez schrieb am 09.10.2020 um 16:31:
>> To improve your command and allow a space between both arguments you can use
>>
>> \unexpanded\def\startswith
>>     {\dodoubleargument\dostartswith}
>>
>> \def\dostartswith[#1][#2]%
>>     {...}
> Now I see with \dosingleargument, \dodoubleargument and
> \dotripleargument are there.
>
> Which are the improvements to the command added by \do*argument?

You can add a space between both arguments. You version expects this

     \startswith [...][...]

while the extended code allows this

     \startswith [...] [...]

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
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: \doifelse not working, \doiftextelse breaking
  2020-10-09 15:10     ` Wolfgang Schuster
@ 2020-10-09 19:24       ` Pablo Rodriguez
  0 siblings, 0 replies; 5+ messages in thread
From: Pablo Rodriguez @ 2020-10-09 19:24 UTC (permalink / raw)
  To: ntg-context

On 10/9/20 5:10 PM, Wolfgang Schuster wrote:
> Pablo Rodriguez schrieb am 09.10.2020 um 16:31:
>> [...]
>> Which are the improvements to the command added by \do*argument?
>
> You can add a space between both arguments. You version expects this
>
>      \startswith [...][...]
>
> while the extended code allows this
>
>      \startswith [...] [...]

Many thanks for your explanation, Wolfgang.

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
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2020-10-09 19:24 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-09 13:58 \doifelse not working, \doiftextelse breaking Pablo Rodriguez
2020-10-09 14:08 ` Wolfgang Schuster
2020-10-09 14:31   ` Pablo Rodriguez
2020-10-09 15:10     ` Wolfgang Schuster
2020-10-09 19:24       ` Pablo Rodriguez

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).