Re: [NTG-context] How to let a macro check the previous value of #1 the last time the same macro was called?

2022-01-11 Thread Hans Hagen via ntg-context

On 1/11/2022 5:22 AM, Aditya Mahajan via ntg-context wrote:

On Tue, 11 Jan 2022, Henning Hraban Ramm via ntg-context wrote:


Am 10.01.22 um 20:21 schrieb Wolfgang Schuster:

Henning Hraban Ramm via ntg-context schrieb am 10.01.2022 um 09:52:

Would it make more sense, or would it be “cleaner” to use a variable?


You can get rid of the temp variable before the command definition but
now you have to access it with a different method in \mymacro, below is
one way (LMTX only) but \setvariable and \getvariable work as well.

\define[1]\mymacro
    {\iftok{#1}{\getvalue{previousmymacro}}%
   same as last time
     \else
   it is different from last time
     \fi
     \setvalue{previousmymacro}{#1}}


That was the approach that I meant. Thank you.

But would you consider one way to be better?


Just for fun: lua code

\startluacode
   local previous = nil

   interfaces.implement {
 name = "mymacro",
 public = true,
 arguments = "string",
 actions = function (current)
   if current == previous then
   context("same as last time")
   else
   context("Different!")
   end
   previous = current
   end,
   }

\stopluacode

\starttext

\startlines
cat: \mymacro{cat}
cat: \mymacro{cat}
mouse: \mymacro{mouse}
mouse: \mymacro{mouse}
cat: \mymacro{cat}
\stoplines

\stoptext


keep in mind that what you do is global (probably what one wants here):

\startlines
cat: \mymacro{cat}
cat: \mymacro{cat}
{mouse: \mymacro{mouse}}
{mouse: \mymacro{mouse}}
cat: \mymacro{cat}
\stoplines


-
  Hans Hagen | PRAGMA ADE
  Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
   tel: 038 477 53 69 | www.pragma-ade.nl | 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://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki : http://contextgarden.net
___


Re: [NTG-context] How to let a macro check the previous value of #1 the last time the same macro was called?

2022-01-10 Thread Aditya Mahajan via ntg-context
On Tue, 11 Jan 2022, Henning Hraban Ramm via ntg-context wrote:

> Am 10.01.22 um 20:21 schrieb Wolfgang Schuster:
> > Henning Hraban Ramm via ntg-context schrieb am 10.01.2022 um 09:52:
> >> Would it make more sense, or would it be “cleaner” to use a variable?
> > 
> > You can get rid of the temp variable before the command definition but 
> > now you have to access it with a different method in \mymacro, below is 
> > one way (LMTX only) but \setvariable and \getvariable work as well.
> > 
> > \define[1]\mymacro
> >    {\iftok{#1}{\getvalue{previousmymacro}}%
> >   same as last time
> >     \else
> >   it is different from last time
> >     \fi
> >     \setvalue{previousmymacro}{#1}}
> 
> That was the approach that I meant. Thank you.
> 
> But would you consider one way to be better?

Just for fun: lua code

\startluacode
  local previous = nil

  interfaces.implement {
name = "mymacro",
public = true, 
arguments = "string",
actions = function (current) 
  if current == previous then
  context("same as last time")
  else
  context("Different!")
  end
  previous = current
  end,
  }

\stopluacode

\starttext

\startlines
cat: \mymacro{cat}
cat: \mymacro{cat}
mouse: \mymacro{mouse}
mouse: \mymacro{mouse}
cat: \mymacro{cat}
\stoplines

\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
___


Re: [NTG-context] How to let a macro check the previous value of #1 the last time the same macro was called?

2022-01-10 Thread Henning Hraban Ramm via ntg-context

Am 10.01.22 um 20:21 schrieb Wolfgang Schuster:

Henning Hraban Ramm via ntg-context schrieb am 10.01.2022 um 09:52:

Would it make more sense, or would it be “cleaner” to use a variable?


You can get rid of the temp variable before the command definition but 
now you have to access it with a different method in \mymacro, below is 
one way (LMTX only) but \setvariable and \getvariable work as well.


\define[1]\mymacro
   {\iftok{#1}{\getvalue{previousmymacro}}%
  same as last time
    \else
  it is different from last time
    \fi
    \setvalue{previousmymacro}{#1}}


That was the approach that I meant. Thank you.

But would you consider one way to be better?

Hraban
___
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] How to let a macro check the previous value of #1 the last time the same macro was called?

2022-01-10 Thread Wolfgang Schuster via ntg-context

Henning Hraban Ramm via ntg-context schrieb am 10.01.2022 um 09:52:

Am 09.01.22 um 16:03 schrieb Wolfgang Schuster via ntg-context:

Joel via ntg-context schrieb am 09.01.2022 um 15:16:
Is there a way for a macro to check the previous value of #1, the 
last time that same macro was called?


To check is the current value differs from the last one you need a 
temp macro where you store the current value at the end of your 
command to check it in the next call.


Would it make more sense, or would it be “cleaner” to use a variable?


You can get rid of the temp variable before the command definition but 
now you have to access it with a different method in \mymacro, below is 
one way (LMTX only) but \setvariable and \getvariable work as well.


\define[1]\mymacro
  {\iftok{#1}{\getvalue{previousmymacro}}%
 same as last time
   \else
 it is different from last time
   \fi
   \setvalue{previousmymacro}{#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] How to let a macro check the previous value of #1 the last time the same macro was called?

2022-01-10 Thread Henning Hraban Ramm via ntg-context

Am 09.01.22 um 16:03 schrieb Wolfgang Schuster via ntg-context:

Joel via ntg-context schrieb am 09.01.2022 um 15:16:
Is there a way for a macro to check the previous value of #1, the last 
time that same macro was called?


To check is the current value differs from the last one you need a temp 
macro where you store the current value at the end of your command to 
check it in the next call.


Would it make more sense, or would it be “cleaner” to use a variable?

Hraban
___
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] How to let a macro check the previous value of #1 the last time the same macro was called?

2022-01-09 Thread Wolfgang Schuster via ntg-context

Joel via ntg-context schrieb am 09.01.2022 um 15:16:
Is there a way for a macro to check the previous value of #1, the last 
time that same macro was called?


Here is a minimum working example, pretending that `\previousvalue` is 
equal to #1 from the last time the same macro was called:


[...]


To check is the current value differs from the last one you need a temp 
macro where you store the current value at the end of your command to 
check it in the next call.


\let\previousmymacro\empty

\define[1]\mymacro
  {\edef\currentmymacro{#1}%
   \ifx\previousmymacro\currentmymacro
 same as last time
   \else
 it is different from last time
   \fi
   \let\previousmymacro\currentmymacro}

\starttext

\startlines
cat: \mymacro{cat}
cat: \mymacro{cat}
mouse: \mymacro{mouse}
mouse: \mymacro{mouse}
cat: \mymacro{cat}
\stoplines

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


[NTG-context] How to let a macro check the previous value of #1 the last time the same macro was called?

2022-01-09 Thread Joel via ntg-context
Is there a way for a macro to check the previous value of #1, the last time 
that same macro was called?

Here is a minimum working example, pretending that `\previousvalue` is equal to 
#1 from the last time the same macro was called:

    \define[1]\mymacro{
    \if\previousvalue=#1
        same as last time
    \else
        it is different from last time
    \fi
    }

\starttext

    \mymacro{cat}
    \mymacro{cat}
    \mymacro{mouse}
    \mymacro{mouse}
    \mymacro{cat}

\stoptext

This would print:

    it is different from last time <--it was never called previously
    same as last time
    it is different from last time
    same as last time
    it is different from last time

--Joel
___
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
___