[NTG-context] checking the first word in a command

Hans Hagen pragma at wxs.nl
Mon Jan 26 18:43:20 CET 2015


On 1/26/2015 5:49 PM, Pablo Rodriguez wrote:
> Dear list,
>
> I have the following sample:
>
>      \starttext
>
>      \def\Persona{señor Juan Martínez}
>      \def\Persona{señora María Pérez}
>
>      El/La \Persona\ ha aprobado.
>      \stoptext
>
> How can I replace "El/La" in text with a command that can assign the
> proper article?
>
> I could use the translate module, but the real case is more complex than
> the previous sample.
>
> What I need in the command is that it can check the first word in the
> command \Persona and assign "el" or "la".
>
> Which is the right way to do this?

\startluacode

local replacer = lpeg.replacer {
     ["señor"]  = "el señor",
     ["señora"] = "la señora",
}

function document.MaleOrFemale(str)
     context(lpeg.match(replacer,str))
end

\stopluacode

\unexpanded\def\MaleOrFemale#1%
   {\ctxlua{document.MaleOrFemale("#1")}}

\starttext

whatever \MaleOrFemale{señor Juan Martínez} and \MaleOrFemale{señora 
María Pérez}

\stoptext

-----------------------------------------------------------------
                                           Hans Hagen | PRAGMA ADE
               Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
     tel: 038 477 53 69 | voip: 087 875 68 74 | www.pragma-ade.com
                                              | www.pragma-pod.nl
-----------------------------------------------------------------


More information about the ntg-context mailing list