From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.io/gmane.comp.tex.context/31346 Path: news.gmane.org!not-for-mail From: Hans Hagen Newsgroups: gmane.comp.tex.context Subject: Re: Append to a commalist Date: Thu, 12 Oct 2006 15:49:08 +0200 Message-ID: <452E47D4.3080002@wxs.nl> References: 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 1160661071 18753 80.91.229.2 (12 Oct 2006 13:51:11 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Thu, 12 Oct 2006 13:51:11 +0000 (UTC) Original-X-From: ntg-context-bounces@ntg.nl Thu Oct 12 15:51:08 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 1GY0wE-0008UV-2A for gctc-ntg-context-518@m.gmane.org; Thu, 12 Oct 2006 15:49:30 +0200 Original-Received: from localhost (localhost [127.0.0.1]) by ronja.ntg.nl (Postfix) with ESMTP id 756461FC5A; Thu, 12 Oct 2006 15:49:29 +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 29897-04; Thu, 12 Oct 2006 15:49:19 +0200 (CEST) Original-Received: from ronja.vet.uu.nl (localhost [127.0.0.1]) by ronja.ntg.nl (Postfix) with ESMTP id 6CF7F1FE3F; Thu, 12 Oct 2006 15:49:18 +0200 (CEST) Original-Received: from localhost (localhost [127.0.0.1]) by ronja.ntg.nl (Postfix) with ESMTP id 8AF9F1FE3F for ; Thu, 12 Oct 2006 15:49:14 +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 29898-05-3 for ; Thu, 12 Oct 2006 15:49:09 +0200 (CEST) Original-Received: from mail.pragma-ade.net (dsl-083-247-100-017.solcon.nl [83.247.100.17]) by ronja.ntg.nl (Postfix) with SMTP id A86821FC5A for ; Thu, 12 Oct 2006 15:49:08 +0200 (CEST) Original-Received: from [10.100.1.104] (unverified [10.100.1.104]) by controller-1 (SurgeMail 3.7b8) with ESMTP id 12581 for ; Thu, 12 Oct 2006 15:49:08 +0200 User-Agent: Thunderbird 1.5.0.7 (Windows/20060909) Original-To: mailing list for ConTeXt users In-Reply-To: X-Server: High Performance Mail Server - http://surgemail.com r=-274017400 X-Authenticated-User: hagen@controller-1 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:31346 Archived-At: 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} ----------------------------------------------------------------- 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 -----------------------------------------------------------------