The 'selector' feature sounds truly wonderfull! The code below doesn't
compile yet for me though ...
1) '\protect' needs to be called after '{\executeifdefined{\??sx#1\c!n  
1}}', no?
2) Even after changing that I run into the following error when compiling
the example below:

! Missing { inserted.
<to be read again>

l.94
         {\select{caption}{zapf}{\input zapf \relax}}

Thank you for your help!

Joh

Hans Hagen wrote:
> \unprotect
> 
> % let's reuse this one in selectors (from syst-ext)
> 
> \def\dofilterfromstr#1#2% max n
>   {\ifcase#1\or
>      \ifcase#2\or
>        \strippedcsname\firstofoneargument
>      \else
>        \strippedcsname\gobbleoneargument
>      \fi
>    \or
>      \ifcase#2\or
>        \strippedcsname\firstoftwoarguments
>      \or
>        \strippedcsname\secondoftwoarguments
>      \else
>        \strippedcsname\gobbletwoarguments
>      \fi
>    \or
>      \ifcase#2\or
>        \strippedcsname\firstofthreearguments
>      \or
>        \strippedcsname\secondofthreearguments
>      \or
>        \strippedcsname\thirdofthreearguments
>      \else
>        \strippedcsname\gobblethreearguments
>      \fi
>    \or
>      \ifcase#2\or
>        \strippedcsname\firstoffourarguments
>      \or
>        \strippedcsname\secondoffourarguments
>      \or
>        \strippedcsname\thirdoffourarguments
>      \or
>        \strippedcsname\fourthoffourarguments
>      \else
>        \strippedcsname\gobblefourarguments
>      \fi
>    \or
>      \ifcase#2\or
>        \strippedcsname\firstoffivearguments
>      \or
>        \strippedcsname\secondoffivearguments
>      \or
>        \strippedcsname\thirdoffivearguments
>      \or
>        \strippedcsname\fourthoffivearguments
>      \or
>        \strippedcsname\fifthoffivearguments
>      \else
>        \strippedcsname\gobblefivearguments
>      \fi
>    \fi}
> 
> \def\filterfromvalue#1#2#3% value max n
>   [EMAIL PROTECTED]@EAEAEA\csname                   % we use the fact that an
>      [EMAIL PROTECTED]   % undefined cs has become \relax
>        \strippedcsname\gobbleoneargument % which we then gobble here
>      \else
>        \dofilterfromstr{#2}{#3}%
>      \fi
>      \endcsname\csname#1\endcsname}
> 
> \def\filterfromnext#1#2% max n {..}{..}{..}{..}
>   {\csname\dofilterfromstr{#1}{#2}\endcsname}
> 
> % new, selectors
> 
> \definesystemvariable{sx}
> 
> \def\defineselector{\dodoubleargument\dodefineselector}
> \def\setupselector {\dodoubleargument\dosetupselector}
> 
> \def\dodefineselector[#1][#2]{\getparameters[\??sx#1][\c!max=2,\c!n=1,#2]}
> \def\dosetupselector [#1][#2]{\getparameters[\??sx#1][#2]}
> 
> \unexpanded\def\select#1%
>   {\filterfromnext
>      {\executeifdefined{\??sx#1\c!max}1}
>      {\executeifdefined{\??sx#1\c!n  }1}}
> 
> \defineselector[caption][max=2,n=1]
> 
> \start
>     \setupselector[caption][n=1]
>     \placelist[figure][criterium=all]
> \stop
> 
> \starttext
> 
> \placefigure
>   {\select{caption}{zapf}{\input zapf \relax}}
>   {}
> 
> \stoptext
> 
> i'll add selectors to the core
> 
> Hans
> 
> -----------------------------------------------------------------
>                                           Hans Hagen | PRAGMA ADE
>               Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
>      tel: 038 477 53 69 | fax: 038 477 53 74 | www.pragma-ade.com
>                                              | www.pragma-pod.nl
> -----------------------------------------------------------------


_______________________________________________
ntg-context mailing list
ntg-context@ntg.nl
http://www.ntg.nl/mailman/listinfo/ntg-context

Reply via email to