package com.prezi.spaghetti.javascript;
import com.prezi.spaghetti.ast.EnumNode;
import com.prezi.spaghetti.ast.EnumValueNode;
import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList;
import java.util.List;
public class JavaScriptEnumGeneratorVisitor extends AbstractJavaScriptGeneratorVisitor {
@Override
public String visitEnumNode(EnumNode node) {
return embedInPackageStructure(node, new PackagedGenerator<EnumNode>() {
@Override
public String generate(EnumNode node, int indentLevel, String parent) {
final String indent = StringUtils.repeat("\t", indentLevel);
List<String> values = new ArrayList<String>();
for (EnumValueNode value : node.getValues()) {
values.add(String.format("%s\t\"%s\": %d", indent, value.getName(), value.getValue()));
}
String entries = StringUtils.join(values, ",\n");
return String.format(
"%s%s.%s = {\n" +
"%s\n" +
"%s};\n",
indent, parent, node.getName(),
entries,
indent
);
}
});
}
}