package com.prezi.spaghetti.javascript;
import com.prezi.spaghetti.ast.ModuleNode;
import com.prezi.spaghetti.generator.AbstractHeaderGenerator;
import com.prezi.spaghetti.generator.GeneratorParameters;
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
public class JavaScriptHeaderGenerator extends AbstractHeaderGenerator {
public JavaScriptHeaderGenerator() {
super("js");
}
@Override
public void generateHeaders(GeneratorParameters params, File outputDirectory) throws IOException {
String header = params.getHeader();
String contents = "";
for (ModuleNode moduleNode : params.getModuleConfiguration().getAllModules()) {
// TODO Generate the package structure once per module, and put everything in the module under that single structure
contents += moduleNode.accept(new JavaScriptConstGeneratorVisitor());
contents += moduleNode.accept(new JavaScriptEnumGeneratorVisitor());
createSourceFile(header, moduleNode.getAlias(), outputDirectory, contents);
}
}
private static File createSourceFile(String header, String name, File outputDirectory, String contents) throws IOException {
File file = new File(outputDirectory, name + ".js");
FileUtils.deleteQuietly(file);
String headerString =
"/*\n"
+ " * " + header + "\n"
+ " */\n"
+ contents
;
FileUtils.write(file, headerString, "utf-8");
return file;
}
}