# [metapost] Processing comma separated values

Dan Luecking luecking at uark.edu
Fri Feb 26 20:56:58 CET 2010

```At 01:32 AM 2/26/2010, Taco Hoekwater wrote:
>>Hi,
>>What is the canonical way of processing a list of comma separated
>>values in metapost. I want to write a helper macro for the boxes
>>package so that
[...]

>>boxsep(a,b,c,d) = p ;
>>
>>expands to
>>
>>b.w - a.e = c.w - b.e = d.w - c.e = p ;
>
>I do not have time to write a full answer, but the way to
>process a list of argument values is something like this:
>
>def boxsep (text a) =
>    forsuffixes _a=a:
>         show _a;
>    endfor
>enddef;

but forgot to "Reply All" to include the list. The
results of our exchange were the following two examples:

%This works only for pair variables (which was the given case):
def boxsep (suffix A)(text T) =
def _prev_suffix = A enddef;
pair _dummy_pair;
forsuffixes _S = T:
_S.w - _prev_suffix.e = _dummy_pair;
def _prev_suffix = _S enddef;
endfor
_dummy_pair
enddef

% This can generate equations for any list of two or
% more variables of the same type (for which subtraction
% makes sense):
def boxsep (suffix A,B) (text T) =
def _prev_suffix = B enddef;
B.w - A.e
forsuffixes _S = T:
= _S.w - _prev_suffix.e
hide (def _prev_suffix = _S enddef;)
endfor
enddef;

The main problem was to remember the previous suffix
so as to subtract it from the current one.

Best wishes,
Dan

Daniel H. Luecking
Department of Mathematical Sciences
Fayetteville, Arkansas
http://www-cs-faculty.stanford.edu/~knuth/iaq.html

```