From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.io/gmane.comp.tex.context/52174 Path: news.gmane.org!not-for-mail From: Hans Hagen Newsgroups: gmane.comp.tex.context Subject: Re: lpeg substitution Date: Tue, 11 Aug 2009 12:59:02 +0200 Message-ID: <4A814EF6.60101@wxs.nl> References: <00765789-37D5-4318-9055-898AAA792135@uni-bonn.de> Reply-To: mailing list for ConTeXt users NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; Format="flowed" Content-Transfer-Encoding: 7bit X-Trace: ger.gmane.org 1249988375 10412 80.91.229.12 (11 Aug 2009 10:59:35 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Tue, 11 Aug 2009 10:59:35 +0000 (UTC) To: mailing list for ConTeXt users Original-X-From: ntg-context-bounces@ntg.nl Tue Aug 11 12:59:19 2009 Return-path: Envelope-to: gctc-ntg-context-518@m.gmane.org Original-Received: from balder.ntg.nl ([195.12.62.10]) by lo.gmane.org with esmtp (Exim 4.50) id 1Map4Z-0004cR-4O for gctc-ntg-context-518@m.gmane.org; Tue, 11 Aug 2009 12:59:19 +0200 Original-Received: from localhost (localhost [127.0.0.1]) by balder.ntg.nl (Postfix) with ESMTP id 77561C9A8A; Tue, 11 Aug 2009 12:59:09 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at balder.ntg.nl Original-Received: from balder.ntg.nl ([127.0.0.1]) by localhost (balder.ntg.nl [127.0.0.1]) (amavisd-new, port 10024) with LMTP id zJJDfhFwPTAj; Tue, 11 Aug 2009 12:59:07 +0200 (CEST) Original-Received: from balder.ntg.nl (localhost [127.0.0.1]) by balder.ntg.nl (Postfix) with ESMTP id 36914C9A7C; Tue, 11 Aug 2009 12:59:07 +0200 (CEST) Original-Received: from localhost (localhost [127.0.0.1]) by balder.ntg.nl (Postfix) with ESMTP id B9D9FC9A7C for ; Tue, 11 Aug 2009 12:59:05 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at balder.ntg.nl Original-Received: from balder.ntg.nl ([127.0.0.1]) by localhost (balder.ntg.nl [127.0.0.1]) (amavisd-new, port 10024) with LMTP id hgXY9x1sqS2e for ; Tue, 11 Aug 2009 12:59:03 +0200 (CEST) Original-Received: from mail.pragma-ade.net (dsl-083-247-100-017.solcon.nl [83.247.100.17]) by balder.ntg.nl (Postfix) with ESMTP id DD356C9A77 for ; Tue, 11 Aug 2009 12:59:03 +0200 (CEST) Original-Received: from [10.100.1.100] (unverified [10.100.1.100]) by controller-1 (SurgeMail 3.9e) with ESMTP id 32869-1840426 for ; Tue, 11 Aug 2009 12:59:03 +0200 User-Agent: Thunderbird 2.0.0.22 (Windows/20090605) In-Reply-To: <00765789-37D5-4318-9055-898AAA792135@uni-bonn.de> X-Originating-IP: 10.100.1.100 X-Authenticated-User: hagen@controller-1 X-BeenThere: ntg-context@ntg.nl X-Mailman-Version: 2.1.12 Precedence: list List-Id: mailing list for ConTeXt users List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: ntg-context-bounces@ntg.nl Errors-To: ntg-context-bounces@ntg.nl Xref: news.gmane.org gmane.comp.tex.context:52174 Archived-At: Thomas A. Schmitz wrote: > Hi all, > > I'm working on my Greek module again and am trying to filter and massage > the input via lpeg, but there's something I don't quite get. As a > minimal example: suppose I want to substitute A and B in my input with X > and leave all other letters alone. Here's my attempt: brrr ... massaging input ... can be dangerous ... anyhow, here you go \startluacode local replace = { A = "X", B = "X", } setmetatable(replace, { __index = function(t,k) return k end }) local dosub = (lpeg.Cs(1)) / replace local subs = (dosub)^0 function test (string) tex.sprint(lpeg.match(subs,string)) end \stopluacode \def\Substitute#1{\ctxlua{test("#1")}} \starttext \Substitute{thomas ABC whatever} \stoptext and yes, it's slow; the next variant is faster but takes a bit more memory (neglectable compared to what is alrwady taken) setmetatable(replace, { __index = function(t,k) t[k] = k return k end }) ----------------------------------------------------------------- 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 ----------------------------------------------------------------- ___________________________________________________________________________________ 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 : https://foundry.supelec.fr/projects/contextrev/ wiki : http://contextgarden.net ___________________________________________________________________________________