/*
* This file is part of the X10 project (http://x10-lang.org).
*
* This file is licensed to You under the Eclipse Public License (EPL);
* You may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.opensource.org/licenses/eclipse-1.0.php
*
* (C) Copyright IBM Corporation 2006-2010.
*/
package x10.emitter;
import java.util.Arrays;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import polyglot.visit.Translator;
/**
* Join a given list of arguments with a given delimiter.
* Do not join a circular list.
*/
public class Join extends Expander {
private final String delimiter;
private final List<? extends Object> args;
public Join(Emitter er, String delimiter, Object a) {
this(er, delimiter, Collections.singletonList(a));
}
public Join(Emitter er, String delimiter, Object... objs) {
this(er, delimiter, Arrays.asList(objs));
}
public Join(Emitter er, String delimiter, List<? extends Object> args) {
super(er);
this.delimiter = delimiter;
this.args = args;
}
@Override
public void expand(Translator tr) {
// er.w.write("/* Join: { */");
for (Iterator<? extends Object> i = args.iterator(); i.hasNext(); ) {
er.prettyPrint(i.next(), tr);
if (i.hasNext())
er.prettyPrint(delimiter, tr);
}
// er.w.write("/* } */");
}
@Override
public String toString() {
return "Join " + er.convertToString(args);
}
}