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