From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.io/gmane.comp.tex.context/31348 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 19:15:12 +0200 Message-ID: <452E7820.6040108@wxs.nl> 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 1160673352 10225 80.91.229.2 (12 Oct 2006 17:15:52 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Thu, 12 Oct 2006 17:15:52 +0000 (UTC) Original-X-From: ntg-context-bounces@ntg.nl Thu Oct 12 19:15:48 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 1GY49c-00035W-QJ for gctc-ntg-context-518@m.gmane.org; Thu, 12 Oct 2006 19:15:32 +0200 Original-Received: from localhost (localhost [127.0.0.1]) by ronja.ntg.nl (Postfix) with ESMTP id 979AF1FE02; Thu, 12 Oct 2006 19:15:31 +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 00431-02-2; Thu, 12 Oct 2006 19:15:26 +0200 (CEST) Original-Received: from ronja.vet.uu.nl (localhost [127.0.0.1]) by ronja.ntg.nl (Postfix) with ESMTP id 790DB1FE04; Thu, 12 Oct 2006 19:15:26 +0200 (CEST) Original-Received: from localhost (localhost [127.0.0.1]) by ronja.ntg.nl (Postfix) with ESMTP id 2966E1FE0A for ; Thu, 12 Oct 2006 19:15:20 +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 29437-04-4 for ; Thu, 12 Oct 2006 19:15:13 +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 32C0A1FE02 for ; Thu, 12 Oct 2006 19:15:13 +0200 (CEST) Original-Received: from [10.100.1.104] (unverified [10.100.1.104]) by controller-1 (SurgeMail 3.7b8) with ESMTP id 12612 for ; Thu, 12 Oct 2006 19:15:12 +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:31348 Archived-At: Aditya Mahajan wrote: > 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} > > nothing, just the {name} thing -) -- ----------------------------------------------------------------- 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 -----------------------------------------------------------------