Hi Hans,

Nice code Hans!… But somehow your replacer code gives always « el » even in 
front of « señora »…
It seems that your lua code for replacer sees « señor » and does not check 
whether it is « señora » or not.
If one modifies a little bit the code into the following, the issue is solved: 
(changing « señora » into « senora »)
%%%%%%%%%%%
\startluacode

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

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{senora María 
Pérez}
\stoptext
%%%%%%%%%%%

Is it possible to have your replacer check the entire first words?

Best regards: OK



> On 26 Jan 2015, at 18:43, Hans Hagen <pra...@wxs.nl> wrote:
> 
> 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
> -----------------------------------------------------------------
> ___________________________________________________________________________________
> 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  : http://foundry.supelec.fr/projects/contextrev/
> wiki     : http://contextgarden.net
> ___________________________________________________________________________________

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

Reply via email to