From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.io/gmane.comp.tex.context/27415 Path: news.gmane.org!not-for-mail From: Taco Hoekwater Newsgroups: gmane.comp.tex.context Subject: Re: Feature request: Creating tables from (tab-separated) values Date: Sun, 23 Apr 2006 19:15:05 +0200 Message-ID: <444BB619.5010906@elvenkind.com> References: <6faad9f00604211902m5c88d10apcd5c208f1825f51c@mail.gmail.com> Reply-To: mailing list for ConTeXt users NNTP-Posting-Host: main.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------070106010007020209010003" X-Trace: sea.gmane.org 1145812463 13142 80.91.229.2 (23 Apr 2006 17:14:23 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Sun, 23 Apr 2006 17:14:23 +0000 (UTC) Original-X-From: ntg-context-bounces@ntg.nl Sun Apr 23 19:14:22 2006 Return-path: Envelope-to: gctc-ntg-context-518@m.gmane.org Original-Received: from ronja.vet.uu.nl ([131.211.172.88] helo=ronja.ntg.nl) by ciao.gmane.org with esmtp (Exim 4.43) id 1FXiA8-0006sr-1V for gctc-ntg-context-518@m.gmane.org; Sun, 23 Apr 2006 19:14:20 +0200 Original-Received: from localhost (localhost [127.0.0.1]) by ronja.ntg.nl (Postfix) with ESMTP id 9EB78126F8; Sun, 23 Apr 2006 19:14:19 +0200 (CEST) Original-Received: from ronja.ntg.nl ([127.0.0.1]) by localhost (smtp.ntg.nl [127.0.0.1]) (amavisd-new, port 10024) with LMTP id 17721-05; Sun, 23 Apr 2006 19:14:16 +0200 (CEST) Original-Received: from ronja.vet.uu.nl (localhost [127.0.0.1]) by ronja.ntg.nl (Postfix) with ESMTP id 382CB12799; Sun, 23 Apr 2006 19:14:15 +0200 (CEST) Original-Received: from localhost (localhost [127.0.0.1]) by ronja.ntg.nl (Postfix) with ESMTP id ACAA612799 for ; Sun, 23 Apr 2006 19:14:13 +0200 (CEST) Original-Received: from ronja.ntg.nl ([127.0.0.1]) by localhost (smtp.ntg.nl [127.0.0.1]) (amavisd-new, port 10024) with LMTP id 17824-03-2 for ; Sun, 23 Apr 2006 19:14:12 +0200 (CEST) Original-Received: from post-23.mail.nl.demon.net (post-23.mail.nl.demon.net [194.159.73.193]) by ronja.ntg.nl (Postfix) with SMTP id CDC22126F8 for ; Sun, 23 Apr 2006 19:14:12 +0200 (CEST) Original-Received: from boo.demon.nl ([82.161.175.147]:51473 helo=[192.168.1.3]) by post-23.mail.nl.demon.net with esmtp (Exim 4.51) id 1FXiA0-0004t5-8T for ntg-context@ntg.nl; Sun, 23 Apr 2006 17:14:12 +0000 User-Agent: Mozilla Thunderbird 1.0 (X11/20050215) X-Accept-Language: en-us, en Original-To: mailing list for ConTeXt users In-Reply-To: <6faad9f00604211902m5c88d10apcd5c208f1825f51c@mail.gmail.com> X-Virus-Scanned: amavisd-new at ntg.nl X-BeenThere: ntg-context@ntg.nl X-Mailman-Version: 2.1.7 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 X-Virus-Scanned: amavisd-new at ntg.nl Xref: news.gmane.org gmane.comp.tex.context:27415 Archived-At: This is a multi-part message in MIME format. --------------070106010007020209010003 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Hi, Here is a quick hack that converts csv to commalist values. Perhaps it helpful for someone. Documentation blurb: This module parses CSV data (somewhat) safely. After \def\dataline{a,,\j,a",a\j a",t{f},",","""","a""b"} \convertcsvdata\dataline\to \myascii \message{\meaning\myascii} output is: macro:->{a},{},{\j },{a"},{a\j a"},{t{f}},{,},{"},{a"b} The result is detokenized, like would be with \type{\convertargument}. Therefore, you will need to run \type{\scantokens} over the list items if the CVS data was actually \TeX{} code. Cheers, Taco --------------070106010007020209010003 Content-Type: application/x-tex; name="t-asciidata.tex" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="t-asciidata.tex" %D \module %D [ file=t-asciidata, %D version=2006.04.22, %D title=Ascii data processing, %D subtitle=Convert data to commalists, %D author=Taco Hoekwater, %D date=\currentdate, %D copyright=Public Domain] %C %C Donated to the public domain. %D This module parses CSV data (somewhat) safely. After %D %D \starttyping %D \def\dataline{a,,\j,a",a\j a",t{f},",","""","a""b"} %D \convertcsvdata\dataline\to \myascii %D \message{\meaning\myascii} %D \stoptyping %D outputs: %D \starttyping %D macro:->{a},{},{\j },{a"},{a\j a"},{t{f}},{,},{"},{a"b} %D \stoptyping %D The result is detokenized, like would be with \type{\convertargument}. %D Therefore, you will need to run \type{\scantokens} over the list %D items if the CVS data was actually \TeX{} code. \unprotect \unexpanded\def\convertcsvdata#1\to#2% {\@EA\convertargument#1\to\csvdata \@EA\doconvertcsvdata\csvdata\to#2} \def\csvquotechar{"}% \def\doconvertcsvdata#1\to#2% {{\let\csvcommalist\relax \doconvertcsvitem,#1,\endconvertcvsitem \xdef\setupcsvcommalist {\dodoglobal\edef\noexpand#2{\csvcommalist}}% \aftergroup\setupcsvcommalist }} % \def\csvadddef#1#2% {\ifx#1\relax \let#1\empty \else\ifx#1\empty \def#1{{#2}}% \else \appended\def#1{,{#2}}% \fi\fi} \def\doconvertcsvlist,#1% {\ifx#1\endconvertcvsitem \let\next \gobbleoneargument \else\ifx#1"% \let\next \doconvertcsvquoteditem \else \let\next \doconvertcsvitem \fi \fi \next#1} \def\doconvertcsvquoteditem"#1"#2% {\ifx#2,% \let\next\doconvertcsvlist \def\arg{,}% \csvadddef\csvcommalist{#1}% \else \let\next\redoconvertcsvquoteditem \def\arg{#1\csvquotechar}% \fi \expandafter\next\arg} \def\redoconvertcsvquoteditem#1"#2% {\ifx#2,% \let\next\doconvertcsvlist \def\arg{,}% \csvadddef\csvcommalist{#1}% \else \let\next\redoconvertcsvquoteditem \def\arg{#1\csvquotechar}% \fi \expandafter\next\arg} \def\doconvertcsvitem#1,% {\csvadddef\csvcommalist{#1}\doconvertcsvlist,} \protect --------------070106010007020209010003 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ ntg-context mailing list ntg-context@ntg.nl http://www.ntg.nl/mailman/listinfo/ntg-context --------------070106010007020209010003--