01: package jsint;
02:
03: /** Values provided by Derek Upham <Derek.Upham@ontain.com> **/
04:
05: public class Values implements java.io.Serializable {
06: public static Object values(Pair args) {
07: int len = args.length();
08: // if (args.length() == 1) return args.first;
09: if (!args.isEmpty() && ((Pair) args.rest).isEmpty())
10: return args.first;
11: else
12: return new Values(args);
13: }
14:
15: public static Object callWithValues(Procedure source, Procedure sink) {
16: Object result = source.apply(Pair.EMPTY);
17: if (result instanceof Values)
18: return sink.apply(((Values) result).rep);
19: else
20: return sink.apply(new Pair(result, Pair.EMPTY));
21: }
22:
23: private Pair rep;
24:
25: public Values(Pair list) {
26: rep = list;
27: }
28:
29: public String toString() {
30: String newline = System.getProperty("line.separator");
31: StringBuffer sb = new StringBuffer();
32: Pair p = rep;
33: if (!p.isEmpty())
34: sb.append(U.stringify(p.first));
35: for (p = ((Pair) p.rest); !p.isEmpty(); p = ((Pair) p.rest)) {
36: sb.append(newline);
37: sb.append(U.stringify(p.first));
38: }
39: return sb.toString();
40: }
41: }
|