ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
* Remove leading spaces
@ 2009-02-05 20:26 Bart C. Wise
  2009-02-05 20:36 ` Wolfgang Schuster
  0 siblings, 1 reply; 6+ messages in thread
From: Bart C. Wise @ 2009-02-05 20:26 UTC (permalink / raw)
  To: Context Mailing List


[-- Attachment #1.1: Type: text/plain, Size: 866 bytes --]

When a function is called, I would like to remove any leading space.  Then the 
function can control the spacing.  If I don't remove spaces, it then makes a 
difference whether or not I have a space before the function is called.

I would like the output of the following two lines to be equal:
This is a \MyFunction[1] test.
This is a\MyFunction[1] test.

However, they are not because the first line has a space before the function 
call.  

\def\MyFunction{\dosingleempty\doMyFunction}
\def\doMyFunction[#1]{%
    \processaction[#1]%
        [1=>\medspace dog ,%
         2=>\medspace cat ,%
         default=>\ldots]%
}

\starttext
Test1: This is a\MyFunction[1] test.

Test2: This is a \MyFunction[1] test.

Test3: This is a \MyFunction test.

Test4: This is a\MyFunction test.
\stoptext

Is there a way to do this and not cause any side effects?

Thanks,
Bart

[-- Attachment #1.2: Type: text/html, Size: 2796 bytes --]

[-- Attachment #2: Type: text/plain, Size: 487 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  : https://foundry.supelec.fr/projects/contextrev/
wiki     : http://contextgarden.net
___________________________________________________________________________________

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

* Re: Remove leading spaces
  2009-02-05 20:26 Remove leading spaces Bart C. Wise
@ 2009-02-05 20:36 ` Wolfgang Schuster
  2009-02-05 20:50   ` Bart Wise
  2009-02-05 20:55   ` setvalue/setvariable (was: Re: Remove leading spaces) Peter Münster
  0 siblings, 2 replies; 6+ messages in thread
From: Wolfgang Schuster @ 2009-02-05 20:36 UTC (permalink / raw)
  To: mailing list for ConTeXt users


Am 05.02.2009 um 21:26 schrieb Bart C. Wise:

> When a function is called, I would like to remove any leading space.  
> Then the function can control the spacing. If I don't remove spaces,  
> it then makes a difference whether or not I have a space before the  
> function is called.
>
> Is there a way to do this and not cause any side effects?

You can use \removeunwantedpsaces to remove preceding spaces before
your command and \ignorespaces to gobble spaces after your command.

A faster version of your macro is:

\def\MyFunction
   {\dosingleempty\doMyFunction}

\def\doMyFunction[#1]%
   {\removeunwantedspaces\executeifdefined{myfunction:#1} 
{\getvalue{myfunction:default}}}

\setvalue{myfunction:1}{\medspace dog }
\setvalue{myfunction:2}{\medspace cat }
\setvalue{myfunction:default}{\ldots}

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  : https://foundry.supelec.fr/projects/contextrev/
wiki     : http://contextgarden.net
___________________________________________________________________________________


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

* Re: Remove leading spaces
  2009-02-05 20:36 ` Wolfgang Schuster
@ 2009-02-05 20:50   ` Bart Wise
  2009-02-05 20:55   ` setvalue/setvariable (was: Re: Remove leading spaces) Peter Münster
  1 sibling, 0 replies; 6+ messages in thread
From: Bart Wise @ 2009-02-05 20:50 UTC (permalink / raw)
  To: ntg-context


[-- Attachment #1.1: Type: text/plain, Size: 1008 bytes --]

On Thursday 05 February 2009 01:36:16 pm Wolfgang Schuster wrote:
> Am 05.02.2009 um 21:26 schrieb Bart C. Wise:
> > When a function is called, I would like to remove any leading space.
> > Then the function can control the spacing. If I don't remove spaces,
> > it then makes a difference whether or not I have a space before the
> > function is called.
> >
> > Is there a way to do this and not cause any side effects?
>
> You can use \removeunwantedpsaces to remove preceding spaces before
> your command and \ignorespaces to gobble spaces after your command.
>
> A faster version of your macro is:
>
> \def\MyFunction
>    {\dosingleempty\doMyFunction}
>
> \def\doMyFunction[#1]%
>    {\removeunwantedspaces\executeifdefined{myfunction:#1}
> {\getvalue{myfunction:default}}}
>
> \setvalue{myfunction:1}{\medspace dog }
> \setvalue{myfunction:2}{\medspace cat }
> \setvalue{myfunction:default}{\ldots}
>

Thanks Wolfgang for the answer!
And thanks for the coding hints, they are always appreciated!

Bart

[-- Attachment #1.2: Type: text/html, Size: 1867 bytes --]

[-- Attachment #2: Type: text/plain, Size: 487 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  : https://foundry.supelec.fr/projects/contextrev/
wiki     : http://contextgarden.net
___________________________________________________________________________________

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

* setvalue/setvariable (was: Re: Remove leading spaces)
  2009-02-05 20:36 ` Wolfgang Schuster
  2009-02-05 20:50   ` Bart Wise
@ 2009-02-05 20:55   ` Peter Münster
  2009-02-05 21:08     ` setvalue/setvariable Wolfgang Schuster
  1 sibling, 1 reply; 6+ messages in thread
From: Peter Münster @ 2009-02-05 20:55 UTC (permalink / raw)
  To: mailing list for ConTeXt users

On Thu, 5 Feb 2009, Wolfgang Schuster wrote:

> A faster version of your macro is:
> 
> \def\MyFunction
>  {\dosingleempty\doMyFunction}
> 
> \def\doMyFunction[#1]%
>  {\removeunwantedspaces\executeifdefined{myfunction:#1}{\getvalue{myfunction:default}}}
> 
> \setvalue{myfunction:1}{\medspace dog }
> \setvalue{myfunction:2}{\medspace cat }
> \setvalue{myfunction:default}{\ldots}

Hello,

I'm working now a lot with \setvariable and \getvariable. What are the
advantages/disadvantages of set/get-value over set/get-variable?

Cheers, 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  : https://foundry.supelec.fr/projects/contextrev/
wiki     : http://contextgarden.net
___________________________________________________________________________________


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

* Re: setvalue/setvariable
  2009-02-05 20:55   ` setvalue/setvariable (was: Re: Remove leading spaces) Peter Münster
@ 2009-02-05 21:08     ` Wolfgang Schuster
  2009-02-05 21:37       ` setvalue/setvariable Wolfgang Schuster
  0 siblings, 1 reply; 6+ messages in thread
From: Wolfgang Schuster @ 2009-02-05 21:08 UTC (permalink / raw)
  To: mailing list for ConTeXt users


Am 05.02.2009 um 21:55 schrieb Peter Münster:

> On Thu, 5 Feb 2009, Wolfgang Schuster wrote:
>
>> A faster version of your macro is:
>>
>> \def\MyFunction
>> {\dosingleempty\doMyFunction}
>>
>> \def\doMyFunction[#1]%
>> {\removeunwantedspaces\executeifdefined{myfunction:#1} 
>> {\getvalue{myfunction:default}}}
>>
>> \setvalue{myfunction:1}{\medspace dog }
>> \setvalue{myfunction:2}{\medspace cat }
>> \setvalue{myfunction:default}{\ldots}
>
> Hello,
>
> I'm working now a lot with \setvariable and \getvariable. What are the
> advantages/disadvantages of set/get-value over set/get-variable?

It's more a style decision, set/getvariable is at a higher level
than set/getvalue (just wrapper around \csname ... \endcsname) and
they provide a few test macros (doifelsevariable, doifvariable and
doifnotvariable).

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  : https://foundry.supelec.fr/projects/contextrev/
wiki     : http://contextgarden.net
___________________________________________________________________________________


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

* Re: setvalue/setvariable
  2009-02-05 21:08     ` setvalue/setvariable Wolfgang Schuster
@ 2009-02-05 21:37       ` Wolfgang Schuster
  0 siblings, 0 replies; 6+ messages in thread
From: Wolfgang Schuster @ 2009-02-05 21:37 UTC (permalink / raw)
  To: mailing list for ConTeXt users


Am 05.02.2009 um 22:08 schrieb Wolfgang Schuster:

> Am 05.02.2009 um 21:55 schrieb Peter Münster:
>
>>> A faster version of your macro is:
>>>
>>> \def\MyFunction
>>> {\dosingleempty\doMyFunction}
>>>
>>> \def\doMyFunction[#1]%
>>> {\removeunwantedspaces\executeifdefined{myfunction:#1} 
>>> {\getvalue{myfunction:default}}}
>>>
>>> \setvalue{myfunction:1}{\medspace dog }
>>> \setvalue{myfunction:2}{\medspace cat }
>>> \setvalue{myfunction:default}{\ldots}
>>
>> I'm working now a lot with \setvariable and \getvariable. What are  
>> the
>> advantages/disadvantages of set/get-value over set/get-variable?
>
> It's more a style decision, set/getvariable is at a higher level
> than set/getvalue (just wrapper around \csname ... \endcsname) and
> they provide a few test macros (doifelsevariable, doifvariable and
> doifnotvariable).

It matters on which level do you work, is your code for the internals
in a module or used by a user.


My example above is on module level and no should use \setvalue to
add his own option for the \MyFunction command, you could now use
low level code and define your own command:

\def\defineMyFunction{\dodoubleargument\dodefineMyFunction}
\def\dodefineMyFunction[#1][#2]%
   {\setvalue{myfunction:#1}{#2}}

\defineMyFunction[1]      [\medspace dog ]
\defineMyFunction[2]      [\medspace cat ]
\defineMyFunction[default][\ldots        ]

You could have also used \setvariables from begin with the following
defintion for the complete macro:

\def\MyFunction{\dosingleempty\doMyFunction}
\def\doMyFunction[#1]%
   {\removeunwantedspaces\getvariabledefault{myvariable}{#1}%
      {\getvariable{myvariable}{default}}}

\setvariables % set all values with one command
   [myvariable]
   [1={\medspace dog },
    2={\medspace cat },
    default={\ldots}]

\setvariable{1}{\medspace dog } % This could be used instead
\setvariable{2}{\medspace cat } % of \setvariables, each value
\setvariable{default}{\ldots}   % is set with a separate command

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  : https://foundry.supelec.fr/projects/contextrev/
wiki     : http://contextgarden.net
___________________________________________________________________________________


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

end of thread, other threads:[~2009-02-05 21:37 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-02-05 20:26 Remove leading spaces Bart C. Wise
2009-02-05 20:36 ` Wolfgang Schuster
2009-02-05 20:50   ` Bart Wise
2009-02-05 20:55   ` setvalue/setvariable (was: Re: Remove leading spaces) Peter Münster
2009-02-05 21:08     ` setvalue/setvariable Wolfgang Schuster
2009-02-05 21:37       ` setvalue/setvariable Wolfgang Schuster

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