1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 package org.codehaus.groovy.ast.expr;
47
48 import java.util.ArrayList;
49 import java.util.Arrays;
50 import java.util.Iterator;
51 import java.util.List;
52
53 import org.codehaus.groovy.ast.GroovyCodeVisitor;
54
55 /***
56 * Represents a tuple expression {1, 2, 3} which creates an immutable List
57 *
58 * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
59 * @version $Revision: 1.6 $
60 */
61 public class TupleExpression extends Expression {
62 private List expressions;
63
64 public TupleExpression() {
65 this(new ArrayList());
66 }
67
68 public TupleExpression(List expressions) {
69 this.expressions = expressions;
70 }
71
72 public TupleExpression(Expression[] expressionArray) {
73 this();
74 expressions.addAll(Arrays.asList(expressionArray));
75 }
76
77 public void addExpression(Expression expression) {
78 expressions.add(expression);
79 }
80
81 public List getExpressions() {
82 return expressions;
83 }
84
85 public void visit(GroovyCodeVisitor visitor) {
86 visitor.visitTupleExpression(this);
87 }
88
89 public Expression transformExpression(ExpressionTransformer transformer) {
90 Expression ret = new TupleExpression(transformExpressions(getExpressions(), transformer));
91 ret.setSourcePosition(this);
92 return ret;
93 }
94
95 public Expression getExpression(int i) {
96 return (Expression) expressions.get(i);
97 }
98
99 public String getText() {
100 StringBuffer buffer = new StringBuffer("(");
101 boolean first = true;
102 for (Iterator iter = expressions.iterator(); iter.hasNext(); ) {
103 if (first) {
104 first = false;
105 }
106 else {
107 buffer.append(", ");
108 }
109
110 buffer.append(((Expression)iter.next()).getText());
111 }
112 buffer.append(")");
113 return buffer.toString();
114 }
115
116 public String toString() {
117 return super.toString() + expressions;
118 }
119 }