From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.io/gmane.comp.tex.context/60574 Path: news.gmane.org!not-for-mail From: Jaroslav Hajtmar Newsgroups: gmane.comp.tex.context Subject: CSV parser do not processed macro. Date: Sat, 31 Jul 2010 16:41:15 +0200 Message-ID: <4C54360B.1060802@gyza.cz> Reply-To: hajtmar@gyza.cz, mailing list for ConTeXt users NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset="iso-8859-2"; Format="flowed" Content-Transfer-Encoding: quoted-printable X-Trace: dough.gmane.org 1280587297 26543 80.91.229.12 (31 Jul 2010 14:41:37 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Sat, 31 Jul 2010 14:41:37 +0000 (UTC) To: mailing list for ConTeXt users Original-X-From: ntg-context-bounces@ntg.nl Sat Jul 31 16:41:34 2010 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.69) (envelope-from ) id 1OfDFm-0007f5-8G for gctc-ntg-context-518@m.gmane.org; Sat, 31 Jul 2010 16:41:34 +0200 Original-Received: from localhost (localhost [127.0.0.1]) by balder.ntg.nl (Postfix) with ESMTP id 0F695C9DAD; Sat, 31 Jul 2010 16:41:33 +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 njNN4imuEfJf; Sat, 31 Jul 2010 16:41:30 +0200 (CEST) Original-Received: from balder.ntg.nl (localhost [127.0.0.1]) by balder.ntg.nl (Postfix) with ESMTP id 3EB79C9DAF; Sat, 31 Jul 2010 16:41:30 +0200 (CEST) Original-Received: from localhost (localhost [127.0.0.1]) by balder.ntg.nl (Postfix) with ESMTP id 0EA31C9DAF for ; Sat, 31 Jul 2010 16:41:29 +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 UEgd-+zdpD0s for ; Sat, 31 Jul 2010 16:41:26 +0200 (CEST) Original-Received: from psi2.forpsi.com (smtpa.forpsi.com [81.2.195.204]) by balder.ntg.nl (Postfix) with SMTP id 478F3C9DAD for ; Sat, 31 Jul 2010 16:41:26 +0200 (CEST) Original-Received: (qmail 18382 invoked by uid 89); 31 Jul 2010 14:41:22 -0000 Original-Received: from unknown (HELO ?192.168.1.2?) (hajtmar@gyza.cz@88.103.230.14) by psi02 with ESMTPA; 31 Jul 2010 14:41:22 -0000 User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; cs; rv:1.9.1.8) Gecko/20100216 Thunderbird/3.0.2 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:60574 Archived-At: Hello all, to solve my problem I need to find why my function ParseCSVdata = incorrectly parses strings stored in a macro. It's including possibly the reason why do not work properly Mojca = database module as I wrote in a recent mail. It seems to enter a string function, which is not my function to find a = separator. Thanx Jaroslav Here is my minimal example: \startluacode function ParseCSVdata(string2parse, separator, leftdelimiter, = rightdelimiter) -- Funkce pro "rozparsov=E1n=ED" jednotliv=FDch z=E1znam=F9 (=F8=E1dk= =F9) CSV tabulky -- Vstupn=ED textov=FD =F8et=ECzec (na=E8ten=FD =F8=E1dek) je v m=EDst= ech v=FDskytu = separ=E1toru "rozsek=E1n" na jednotliv=E1 pole -- Jedin=FD povinn=FD vstupn=ED parametr je 'string2parse'. P=F8i = nenastaven=ED zb=FDvaj=EDc=EDch t=F8=ED parametr=F9 se jako separ=E1tor a o= dd=EClova=E8e = pou=BEij=ED bu=EF glob=E1ln=ED prom=ECnn=E9 Sep, Ld a Rd nebo se pou=BEij= =ED defaultn=ED hodnoty -- V=FDstupem je pole odd=EClen=FDch =F8et=ECzc=F9 -- Kdy=BE nejsou glob=E1ln=ED prom=ECnn=E9 Sep, Ld a Rd nastaveny u=BE= ivatelem, = nastav=ED se na defaultn=ED hodnoty. U=BEivatel si m=F9=BEe defaultn=ED hod= noty = libovoln=EC zm=ECnit podle toho, jak=E9 hodnoty pou=BE=EDv=E1 ve sv=FDch ap= likac=EDch = nej=E8ast=ECji Sep =3D (Sep =3D=3D nil) and UserCSVSeparator or Sep -- Pokud nen= =ED = glob. nezn=E1m=E1 Sep nastavena, pou=BEije se defaultn=ED hodnota ';' (st= =F8edn=EDk). Ld =3D (Ld =3D=3D nil) and UserCSVLeftDelimiter or Ld -- Pokud nen=ED = glob. = nezn=E1m=E1 Ld (left delimiter) nastavena, pou=BEije se defaultn=ED hodnota= '' = (pr=E1zdn=FD =F8et=ECzec) Rd =3D (Rd =3D=3D nil) and UserCSVRightDelimiter or Rd -- Pokud nen=ED = glob. nezn=E1m=E1 Rd (right delimiter) nastavena, pou=BEije se defaultn=ED = hodnota '' (pr=E1zdn=FD =F8et=ECzec) -- Nastaven=ED hodnot parametr=F9, kter=E9 nejsou p=F8i vol=E1n=ED funkc= e = nastaveny tj. p=F8i vol=E1n=ED funkce ParseCSVdata(string2parse) s pouze = jedn=EDm parametrem local separator =3D (separator =3D=3D nil) and Sep or separator -- p= =F8i = nenastaven=ED separ=E1toru se pou=BEije local leftdelimiter =3D (leftdelimiter =3D=3D nil) and Ld or leftdelim= iter local rightdelimiter =3D (rightdelimiter =3D=3D nil) and Rd or rightde= limiter -- A jdeme na vlastn=ED zpracov=E1n=ED =F8et=ECzce ... local result=3D{} if leftdelimiter ~=3D '' and rightdelimiter ~=3D '' then -- Kdy=BE = jsou polo=BEky v =F8=E1dku vymezeny lev=FDm i prav=FDm delimiterem (tj. jak= ousi = z=E1vorkou) nap=F8. "pole1";"pole2" nebo {pole1};{pole2} .. atd. string.gsub(string2parse, = leftdelimiter.."(.-)"..rightdelimiter, function(a) = table.insert(result,a) end ) -- Je vid=ECt, =BEe v tomto p=F8=EDpad=EC ani = nez=E1le=BE=ED na separ=E1toru, jednotliv=E9 uz=E1vorkovan=E9 =F8et=ECzce s= e od sebe odd=ECl=ED else -- Kdy=BE je pouze separ=E1tor pol=ED bez vymezuj=EDc=EDch zn= ak=F9 - = delimiter=F9 (tento p=F8=EDpad bohu=BEel neumo=BE=F2uje pou=BEit=ED separ= =E1toru jako = samostatn=E9ho znaku v n=ECjak=E9m poli ) result=3Dstring.split(string2parse,separator) -- pak sta=E8=ED = vstupn=ED =F8etezec jen "vysplitovat" tj. rozsekat na samostatn=E9 =E8=E1sti end return result -- Funkce vr=E1t=ED pole result obsahuj=EDc=ED odd=ECle= n=E1 = jednotliv=E1 pole =F8=E1dkov=E9ho CSV z=E1znamu end function pars(inppar) tex.sprint("input parametr (string): "..inppar.."\\par") CSVLine=3DParseCSVdata(inppar,',','','') tex.print(table.maxn(CSVLine).." item(s) \\par") for i =3D 1, table.maxn(CSVLine) do tex.sprint(i..". "..CSVLine[i].."\\par") end tex.sprint("\\blank[big]") end \stopluacode \def\printaction{x,y,z,u,v} \starttext \startluacode pars("a,b,c,d") pars("\\printaction") \stopluacode \stoptext ___________________________________________________________________________= ________ If your question is of interest to others as well, please add an entry to t= he Wiki! maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-cont= ext webpage : http://www.pragma-ade.nl / http://tex.aanhet.net archive : http://foundry.supelec.fr/projects/contextrev/ wiki : http://contextgarden.net ___________________________________________________________________________= ________