From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.io/gmane.comp.tex.context/31347 Path: news.gmane.org!not-for-mail From: Aditya Mahajan Newsgroups: gmane.comp.tex.context Subject: Re: Append to a commalist Date: Thu, 12 Oct 2006 11:31:39 -0400 (EDT) Message-ID: References: <452E47D4.3080002@wxs.nl> Reply-To: mailing list for ConTeXt users NNTP-Posting-Host: main.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Trace: sea.gmane.org 1160667363 16196 80.91.229.2 (12 Oct 2006 15:36:03 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Thu, 12 Oct 2006 15:36:03 +0000 (UTC) Original-X-From: ntg-context-bounces@ntg.nl Thu Oct 12 17:35:59 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 1GY2XR-0001YG-FS for gctc-ntg-context-518@m.gmane.org; Thu, 12 Oct 2006 17:32:01 +0200 Original-Received: from localhost (localhost [127.0.0.1]) by ronja.ntg.nl (Postfix) with ESMTP id 2E5331FE23; Thu, 12 Oct 2006 17:32:00 +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 14919-03; Thu, 12 Oct 2006 17:31:52 +0200 (CEST) Original-Received: from ronja.vet.uu.nl (localhost [127.0.0.1]) by ronja.ntg.nl (Postfix) with ESMTP id 2308E1FDFF; Thu, 12 Oct 2006 17:31:52 +0200 (CEST) Original-Received: from localhost (localhost [127.0.0.1]) by ronja.ntg.nl (Postfix) with ESMTP id CC80B1FDFF for ; Thu, 12 Oct 2006 17:31:47 +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 13742-04 for ; Thu, 12 Oct 2006 17:31:42 +0200 (CEST) Original-Received: from hellskitchen.mr.itd.umich.edu (smtp.mail.umich.edu [141.211.14.82]) by ronja.ntg.nl (Postfix) with SMTP id 294231FDFC for ; Thu, 12 Oct 2006 17:31:39 +0200 (CEST) Original-Received: FROM aditya.annarb01.mi.comcast.net (c-68-40-50-205.hsd1.mi.comcast.net [68.40.50.205]) BY hellskitchen.mr.itd.umich.edu ID 452E5FDA.4356.11817 ; 12 Oct 2006 11:31:38 -0400 Original-To: mailing list for ConTeXt users In-Reply-To: <452E47D4.3080002@wxs.nl> 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:31347 Archived-At: On Thu, 12 Oct 2006, Hans Hagen wrote: > Fredrik Sjunnesson wrote: >> Hello, >> >> Is there a smart way to create a commalist? >> >> I want to get the equivalent of >> >> \setparameter[namespace][listname={item1,item2,item3}] >> >> but be able to append one item at the time, like >> >> \append{namepace}{listname}{item1} >> \append{namepace}{listname}{item2} >> \append{namepace}{listname}{item3} >> >> I have tired this: >> >> \def\append#1#2#3{ >> \fullexpandoneargafter\doifemptyelse{\getvariable{#1}{#2}} >> {\edef\tmp{#3}} >> {\edef\tmp{\getvariable{#1}{#2},#3}} >> \setvariables[#1][#2={\tmp}]} >> >> but it only works for one list. Apparently \tmp is not expanded so when >> an item is appended to one list all other lists are affected. I have >> tried \expanded but got the message stack full. >> >> Any help would be greatly appreciated. >> >> > \def\appendtovaluelist#1#2% > {\ifcsname#1\endcsname > \expandafter\ifx\csname#1\endcsname\empty > \expandafter\def\csname#1\endcsname{#2}% > \else > \expandafter\def\csname#1\expandafter > \expandafter\expandafter\endcsname > \expandafter\expandafter\expandafter{\csname#1\endcsname,#2}% > \fi > \else > \expandafter\def\csname#1\endcsname{#2}% > \fi} > > % saves an argument: > > \def\appendtovaluelist#1% > {\ifcsname#1\endcsname > \expandafter\ifx\csname#1\endcsname\empty > \expandafter\noappendtovaluelist > \csname#1\expandafter\expandafter\expandafter\endcsname > \else > \expandafter\doappendtovaluelist > \csname#1\expandafter\expandafter\expandafter\endcsname > \fi > \else > \expandafter\noappendtovaluelist\csname#1\expandafter\endcsname > \fi} > > \def\doappendtovaluelist#1#2{\expandafter\def\expandafter#1\expandafter{#1,#2}} > \def\noappendtovaluelist#1#2{\def#1{#2}} > > \appendtovaluelist{mylist}{aap} > \appendtovaluelist{mylist}{noot} > \appendtovaluelist{mylist}{mies} > > \showvalue{mylist} What is the difference between a commalist and a valuelist :-) \def\secondlist{} \appendtocommalist{aap} {\secondlist} \appendtocommalist{noot} {\secondlist} \appendtocommalist{mies} {\secondlist} \showvalue{secondlist} Aditya