Re: [NTG-context] lpeg pattern in function
Thank you, Hans. Very nice indeed your solutions. Marcus Vinicius On Sat, Aug 7, 2021 at 5:37 AM Hans Hagen wrote: > On 8/6/2021 10:58 PM, Marcus Vinicius Mesquita via ntg-context wrote: > > Dear list, > > in the mwe below, the expected result is ok for most entries but fails > > when the word contains the letters ó or ô. > > We get zoolco instead of zoológico, and termtro instead of termômetro. > > What am I doing wrong? > > > > mwe: > > > > \def\stripnumber#1% > > {\cldcontext{lpeg.match(lpeg.stripper("[¹²³⁴⁵⁶⁷⁸⁹⁰]"), > > [==[#1]==])}} > > > > \starttext > > > > \stripnumber{árbitro⁶} > > \stripnumber{ébano¹} > > \stripnumber{ícone⁸} > > \stripnumber{zoológico⁰} > > \stripnumber{eletroacústico⁹} > > \stripnumber{trânsfuga⁷} > > \stripnumber{farmacêutico¹} > > \stripnumber{maître²} > > \stripnumber{termômetro³} > > \stripnumber{noûs⁴} > > > > \stoptext > > > \def\stripnumber#1% >{\cldcontext{lpeg.match(lpeg.stripper(lpeg.US("¹²³⁴⁵⁶⁷⁸⁹⁰")), > [==[#1]==])}} > > (US -> utf set) > > or > > \startluacode > local s = lpeg.stripper(lpeg.US("¹²³⁴⁵⁶⁷⁸⁹⁰")) > function document.StripNumber(str) > context(lpeg.match(s, str)) > end > \stopluacode > > \def\stripnumber#1{\ctxlua{document.StripNumber([==[#1]==])}} > > or you can go fancy: > > \startluacode > local p_strip = lpeg.stripper(lpeg.US("¹²³⁴⁵⁶⁷⁸⁹⁰")) > > interfaces.implement { > name = "StripNumber", > public= true, > arguments = "string", > actions = function(str) > context(lpeg.match(p_strip, str)) > end > } > \stopluacode > > \StripNumber{zoológico⁰} > > There are more efficient variants but i guess it's good enough. > > Hans > > - >Hans Hagen | PRAGMA ADE >Ridderstraat 27 | 8061 GH Hasselt | The Netherlands > tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl > - > -- Todas as coisas fatigam o corpo, salvo a música, que não fatiga nem o corpo nem seus membros, por ser descanso da alma, primavera do coração, distração do aflito, entretenimento do solitário, e viático do viajante. Kunnâsh al-Hâ'ik (Cancioneiro de al-Hâ'ik) ___ 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://context.aanhet.net archive : https://bitbucket.org/phg/context-mirror/commits/ wiki : http://contextgarden.net ___
Re: [NTG-context] lpeg pattern in function
On 8/6/2021 10:58 PM, Marcus Vinicius Mesquita via ntg-context wrote: Dear list, in the mwe below, the expected result is ok for most entries but fails when the word contains the letters ó or ô. We get zoolco instead of zoológico, and termtro instead of termômetro. What am I doing wrong? mwe: \def\stripnumber#1% {\cldcontext{lpeg.match(lpeg.stripper("[¹²³⁴⁵⁶⁷⁸⁹⁰]"), [==[#1]==])}} \starttext \stripnumber{árbitro⁶} \stripnumber{ébano¹} \stripnumber{ícone⁸} \stripnumber{zoológico⁰} \stripnumber{eletroacústico⁹} \stripnumber{trânsfuga⁷} \stripnumber{farmacêutico¹} \stripnumber{maître²} \stripnumber{termômetro³} \stripnumber{noûs⁴} \stoptext \def\stripnumber#1% {\cldcontext{lpeg.match(lpeg.stripper(lpeg.US("¹²³⁴⁵⁶⁷⁸⁹⁰")), [==[#1]==])}} (US -> utf set) or \startluacode local s = lpeg.stripper(lpeg.US("¹²³⁴⁵⁶⁷⁸⁹⁰")) function document.StripNumber(str) context(lpeg.match(s, str)) end \stopluacode \def\stripnumber#1{\ctxlua{document.StripNumber([==[#1]==])}} or you can go fancy: \startluacode local p_strip = lpeg.stripper(lpeg.US("¹²³⁴⁵⁶⁷⁸⁹⁰")) interfaces.implement { name = "StripNumber", public= true, arguments = "string", actions = function(str) context(lpeg.match(p_strip, str)) end } \stopluacode \StripNumber{zoológico⁰} There are more efficient variants but i guess it's good enough. Hans - Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | www.pragma-ade.nl | 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://context.aanhet.net archive : https://bitbucket.org/phg/context-mirror/commits/ wiki : http://contextgarden.net ___
[NTG-context] lpeg pattern in function
Dear list, in the mwe below, the expected result is ok for most entries but fails when the word contains the letters ó or ô. We get zoolco instead of zoológico, and termtro instead of termômetro. What am I doing wrong? mwe: \def\stripnumber#1% {\cldcontext{lpeg.match(lpeg.stripper("[¹²³⁴⁵⁶⁷⁸⁹⁰]"), [==[#1]==])}} \starttext \stripnumber{árbitro⁶} \stripnumber{ébano¹} \stripnumber{ícone⁸} \stripnumber{zoológico⁰} \stripnumber{eletroacústico⁹} \stripnumber{trânsfuga⁷} \stripnumber{farmacêutico¹} \stripnumber{maître²} \stripnumber{termômetro³} \stripnumber{noûs⁴} \stoptext -- Todas as coisas fatigam o corpo, salvo a música, que não fatiga nem o corpo nem seus membros, por ser descanso da alma, primavera do coração, distração do aflito, entretenimento do solitário, e viático do viajante. Kunnâsh al-Hâ'ik (Cancioneiro de al-Hâ'ik) ___ 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://context.aanhet.net archive : https://bitbucket.org/phg/context-mirror/commits/ wiki : http://contextgarden.net ___