package com.github.jknack.antlr4ide.parser;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import java.io.File;
import java.io.StringReader;
import org.apache.commons.io.FileUtils;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.parser.IParseResult;
import org.eclipse.xtext.parser.IParser;
@Singleton
public class Antlr4ParseHelper<T extends EObject> {
@Inject
private IParser parser;
public IParseResult parse(final CharSequence input) {
final String content = input.toString();
final StringReader stringReader = new StringReader(content);
return this.parser.parse(stringReader);
}
@SuppressWarnings({ "hiding", "unchecked" })
public <T extends Object> T build(final CharSequence input) {
final String content = input.toString();
final StringReader stringReader = new StringReader(content);
final IParseResult parseResult = this.parser.parse(stringReader);
final EObject rootAstElement = parseResult.getRootASTElement();
return ((T) rootAstElement);
}
public String getTextFromFile(final Class<?> clazz)
throws Exception {
return getTextFromFile(clazz, "");
}
public String getTextFromFile(final Class<?> clazz, final String suffix)
throws Exception {
return getTextFromFile(clazz, suffix, ".g4");
}
public String getTextFromFile(final Class<?> clazz, final String suffix,
final String fileExtension) throws Exception {
final String dir = "src/main/resources/";
final String dir2 = dir.replace("/", File.separator);
//final Package pkg = clazz.getPackage();
//final String pkgName = pkg.getName();
//final String pkgName2 = pkgName.replace(".", File.separator);
//final String pathAsString = (((dir2 + pkgName2) + File.separator) + fileName);
final String fileName = clazz.getSimpleName() + suffix + fileExtension;
final String pathAsString = dir2 + fileName;
final File file = new File(pathAsString);
final String content = FileUtils.readFileToString(file, "UTF-8");
return content;
}
}