Thank you, Hans. Very nice indeed your solutions.
Marcus Vinicius
On Sat, Aug 7, 2021 at 5:37 AM Hans Hagen
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)