/** * Create new {@link StCompiler} instance. */ @Inject public StCompiler(OutputStreamFactory outputStreamFactory, @Assisted String templateFileName) { super(outputStreamFactory); STGroup group = new STGroupFile(templateFileName); group.setListener(new StErrorListener()); this.stGroup = group; }
/** * Create new {@link StCompiler} instance. */ @Inject public StCompiler(OutputStreamFactory outputStreamFactory, @Assisted String templateFileName) { super(outputStreamFactory); STGroup group = new STGroupFile(templateFileName); group.setListener(new StErrorListener()); this.stGroup = group; }
protected STGroup getTemplateGroup(Iterable<String> templateFileNames) throws IOException { if (stg == null) { // Convert set of relative paths to .st files into a set of input suppliers Iterable<CharSource> templateInputSuppliers = Iterables.transform(templateFileNames, FILE_TO_INPUT_SUPPLIER_TRANSFORM); // Combine the header and all .st files and load everything into a StringTemplateGroup stg = new STGroup(); stg.setListener(ERROR_LISTENER); for (String templateFileName : templateFileNames) { stg.importTemplates(getTemplateGroupFromFile(templateFileName)); } for (Map.Entry<Class<?>, ? extends AttributeRenderer> entry : attributeRenderers.entrySet()) { Class<?> cls = entry.getKey(); AttributeRenderer renderer = entry.getValue(); stg.registerRenderer(cls, renderer); } } return stg; }
/** * Parses an input String and replaces instances of {@literal <XXX>}" with the value of the XXX OS * Environment Variable. This is used as a pre-parser for the Config files, allowing environment * variables to be swapped at run-time. * * @param raw A raw string (not necessarily valid configuration data) * @return A parsed string with OS variables swapped in * @throws ConfigurationException If any discovered {@literal <WRAPPED_VALUES>} are not found in * System.getenv(). */ public static String swapEnvironmentVariables(String raw) throws ConfigurationException { ErrorBuffer errors = new ErrorBuffer(); ST template = new ST(raw); STGroup g = template.groupThatCreatedThisInstance; g.setListener(errors); Map<String, String> env = System.getenv(); for (String envName : env.keySet()) { if (envName.contains(".")) { logger.warn("skipping " + envName + " because it contains '.' which is not allowed"); continue; } template.add(envName, env.get(envName)); } String parsed = template.render(); if (errors.errors.size() > 0) { throw new ConfigurationException(errors.toString()); } return parsed; }
/** * Parses an input String and replaces instances of {@literal <XXX>}" with the value of the XXX OS * Environment Variable. This is used as a pre-parser for the Config files, allowing environment * variables to be swapped at run-time. * * @param raw A raw string (not necessarily valid configuration data) * @return A parsed string with OS variables swapped in * @throws ConfigurationException If any discovered {@literal <WRAPPED_VALUES>} are not found in * System.getenv(). */ public static String swapEnvironmentVariables(String raw) throws ConfigurationException { ErrorBuffer errors = new ErrorBuffer(); ST template = new ST(raw); STGroup g = template.groupThatCreatedThisInstance; g.setListener(errors); Map<String, String> env = System.getenv(); for (String envName : env.keySet()) { if (envName.contains(".")) { logger.warn("skipping " + envName + " because it contains '.' which is not allowed"); continue; } template.add(envName, env.get(envName)); } String parsed = template.render(); if (errors.errors.size() > 0) { throw new ConfigurationException(errors.toString()); } return parsed; }
public STViz inspect(ErrorManager errMgr, Locale locale, int lineWidth) { ErrorBuffer errors = new ErrorBuffer(); impl.nativeGroup.setListener(errors); StringWriter out = new StringWriter(); STWriter wr = new AutoIndentWriter(out); wr.setLineWidth(lineWidth); Interpreter interp = new Interpreter(groupThatCreatedThisInstance, locale, true); interp.exec(wr, this); // render and track events List<InterpEvent> events = interp.getEvents(); EvalTemplateEvent overallTemplateEval = (EvalTemplateEvent)events.get(events.size()-1); STViz viz = new STViz(errMgr, overallTemplateEval, out.toString(), interp, interp.getExecutionTrace(), errors.errors); viz.open(); return viz; }
public STViz inspect(ErrorManager errMgr, Locale locale, int lineWidth) { ErrorBuffer errors = new ErrorBuffer(); impl.nativeGroup.setListener(errors); StringWriter out = new StringWriter(); STWriter wr = new AutoIndentWriter(out); wr.setLineWidth(lineWidth); Interpreter interp = new Interpreter(groupThatCreatedThisInstance, locale, true); InstanceScope scope = new InstanceScope(null, this); interp.exec(wr, scope); // render and track events List<InterpEvent> events = interp.getEvents(); EvalTemplateEvent overallTemplateEval = (EvalTemplateEvent)events.get(events.size()-1); STViz viz = new STViz(errMgr, overallTemplateEval, out.toString(), interp, interp.getExecutionTrace(), errors.errors); viz.open(); return viz; }
messages.setListener(blankSTListener); boolean messagesOK = verifyMessages(); if ( !messagesOK && language.equals(Locale.US.getLanguage()) ) {
messages.setListener(blankSTListener); boolean messagesOK = verifyMessages(); if ( !messagesOK && language.equals(Locale.US.getLanguage()) ) {
public STViz inspect(ErrorManager errMgr, Locale locale, int lineWidth) { ErrorBuffer errors = new ErrorBuffer(); impl.nativeGroup.setListener(errors); StringWriter out = new StringWriter(); STWriter wr = new AutoIndentWriter(out); wr.setLineWidth(lineWidth); Interpreter interp = new Interpreter(groupThatCreatedThisInstance, locale, true); InstanceScope scope = new InstanceScope(null, this); interp.exec(wr, scope); // render and track events List<InterpEvent> events = interp.getEvents(); EvalTemplateEvent overallTemplateEval = (EvalTemplateEvent)events.get(events.size()-1); STViz viz = new STViz(errMgr, overallTemplateEval, out.toString(), interp, interp.getExecutionTrace(), errors.errors); viz.open(); return viz; }
public STViz inspect(ErrorManager errMgr, Locale locale, int lineWidth) { ErrorBuffer errors = new ErrorBuffer(); impl.nativeGroup.setListener(errors); StringWriter out = new StringWriter(); STWriter wr = new AutoIndentWriter(out); wr.setLineWidth(lineWidth); Interpreter interp = new Interpreter(groupThatCreatedThisInstance, locale, true); InstanceScope scope = new InstanceScope(null, this); interp.exec(wr, scope); // render and track events List<InterpEvent> events = interp.getEvents(); EvalTemplateEvent overallTemplateEval = (EvalTemplateEvent)events.get(events.size()-1); STViz viz = new STViz(errMgr, overallTemplateEval, out.toString(), interp, interp.getExecutionTrace(), errors.errors); viz.open(); return viz; }
public STViz inspect(ErrorManager errMgr, Locale locale, int lineWidth) { ErrorBuffer errors = new ErrorBuffer(); impl.nativeGroup.setListener(errors); StringWriter out = new StringWriter(); STWriter wr = new AutoIndentWriter(out); wr.setLineWidth(lineWidth); Interpreter interp = new Interpreter(groupThatCreatedThisInstance, locale, true); InstanceScope scope = new InstanceScope(null, this); interp.exec(wr, scope); // render and track events List<InterpEvent> events = interp.getEvents(); EvalTemplateEvent overallTemplateEval = (EvalTemplateEvent)events.get(events.size()-1); STViz viz = new STViz(errMgr, overallTemplateEval, out.toString(), interp, interp.getExecutionTrace(), errors.errors); viz.open(); return viz; }
public STViz inspect(ErrorManager errMgr, Locale locale, int lineWidth) { ErrorBuffer errors = new ErrorBuffer(); impl.nativeGroup.setListener(errors); StringWriter out = new StringWriter(); STWriter wr = new AutoIndentWriter(out); wr.setLineWidth(lineWidth); Interpreter interp = new Interpreter(groupThatCreatedThisInstance, locale, true); InstanceScope scope = new InstanceScope(null, this); interp.exec(wr, scope); // render and track events List<InterpEvent> events = interp.getEvents(); EvalTemplateEvent overallTemplateEval = (EvalTemplateEvent)events.get(events.size()-1); STViz viz = new STViz(errMgr, overallTemplateEval, out.toString(), interp, interp.getExecutionTrace(), errors.errors); viz.open(); return viz; }
public STViz inspect(ErrorManager errMgr, Locale locale, int lineWidth) { ErrorBuffer errors = new ErrorBuffer(); impl.nativeGroup.setListener(errors); StringWriter out = new StringWriter(); STWriter wr = new AutoIndentWriter(out); wr.setLineWidth(lineWidth); Interpreter interp = new Interpreter(groupThatCreatedThisInstance, locale, true); InstanceScope scope = new InstanceScope(null, this); interp.exec(wr, scope); // render and track events List<InterpEvent> events = interp.getEvents(); EvalTemplateEvent overallTemplateEval = (EvalTemplateEvent)events.get(events.size()-1); STViz viz = new STViz(errMgr, overallTemplateEval, out.toString(), interp, interp.getExecutionTrace(), errors.errors); viz.open(); return viz; }
public STViz inspect(ErrorManager errMgr, Locale locale, int lineWidth) { ErrorBuffer errors = new ErrorBuffer(); impl.nativeGroup.setListener(errors); StringWriter out = new StringWriter(); STWriter wr = new AutoIndentWriter(out); wr.setLineWidth(lineWidth); Interpreter interp = new Interpreter(groupThatCreatedThisInstance, locale, true); InstanceScope scope = new InstanceScope(null, this); interp.exec(wr, scope); // render and track events List<InterpEvent> events = interp.getEvents(); EvalTemplateEvent overallTemplateEval = (EvalTemplateEvent)events.get(events.size()-1); STViz viz = new STViz(errMgr, overallTemplateEval, out.toString(), interp, interp.getExecutionTrace(), errors.errors); viz.open(); return viz; }
/** The format gets reset either from the Tool if the user supplied a command line option to that effect * Otherwise we just use the default "antlr". */ public static void setFormat(String formatName) { ErrorManager.formatName = formatName; String fileName = "org/antlr/tool/templates/messages/formats/"+formatName+".stg"; format = new STGroupFile(fileName); format.setListener(initSTListener); if ( !format.isDefined("message") ) { // pick random msg to load if ( formatName.equals("antlr") ) { rawError("no such message format file "+fileName+" retrying with default ANTLR format"); setFormat("antlr"); // recurse on this rule, trying the default message format return; } else { setFormat("antlr"); // recurse on this rule, trying the default message format } } format.setListener(blankSTListener); boolean formatOK = verifyFormat(); if ( !formatOK && formatName.equals("antlr") ) { rawError("ANTLR installation corrupted; ANTLR messages format file "+formatName+".stg incomplete"); panic(); } else if ( !formatOK ) { setFormat("antlr"); // recurse on this rule, trying the default message format } }
/** The format gets reset either from the Tool if the user supplied a command line option to that effect * Otherwise we just use the default "antlr". */ public static void setFormat(String formatName) { ErrorManager.formatName = formatName; String fileName = "org/antlr/tool/templates/messages/formats/"+formatName+".stg"; format = new STGroupFile(fileName); format.setListener(initSTListener); if ( !format.isDefined("message") ) { // pick random msg to load if ( formatName.equals("antlr") ) { rawError("no such message format file "+fileName+" retrying with default ANTLR format"); setFormat("antlr"); // recurse on this rule, trying the default message format return; } else { setFormat("antlr"); // recurse on this rule, trying the default message format } } format.setListener(blankSTListener); boolean formatOK = verifyFormat(); if ( !formatOK && formatName.equals("antlr") ) { rawError("ANTLR installation corrupted; ANTLR messages format file "+formatName+".stg incomplete"); panic(); } else if ( !formatOK ) { setFormat("antlr"); // recurse on this rule, trying the default message format } }
@Override protected STGroup loadTemplates() { STGroup result = super.loadTemplates(); result.registerRenderer(Integer.class, new NumberRenderer()); result.registerRenderer(String.class, new StringRenderer()); result.setListener(new STErrorListener() { @Override public void compileTimeError(STMessage msg) { reportError(msg); } @Override public void runTimeError(STMessage msg) { reportError(msg); } @Override public void IOError(STMessage msg) { reportError(msg); } @Override public void internalError(STMessage msg) { reportError(msg); } private void reportError(STMessage msg) { getCodeGenerator().tool.errMgr.toolError(ErrorType.STRING_TEMPLATE_WARNING, msg.cause, msg.toString()); } }); return result; }
@Override protected STGroup loadTemplates() { STGroup result = super.loadTemplates(); result.registerRenderer(Integer.class, new NumberRenderer()); result.registerRenderer(String.class, new StringRenderer()); result.setListener(new STErrorListener() { @Override public void compileTimeError(STMessage msg) { reportError(msg); } @Override public void runTimeError(STMessage msg) { reportError(msg); } @Override public void IOError(STMessage msg) { reportError(msg); } @Override public void internalError(STMessage msg) { reportError(msg); } private void reportError(STMessage msg) { getCodeGenerator().tool.errMgr.toolError(ErrorType.STRING_TEMPLATE_WARNING, msg.cause, msg.toString()); } }); return result; }
@Override protected STGroup loadTemplates() { // override the superclass behavior to put all C# templates in the same folder STGroup result = new STGroupFile(CodeGenerator.TEMPLATE_ROOT+"/CSharp/"+getLanguage()+STGroup.GROUP_FILE_EXTENSION); result.registerRenderer(Integer.class, new NumberRenderer()); result.registerRenderer(String.class, new StringRenderer()); result.setListener(new STErrorListener() { @Override public void compileTimeError(STMessage msg) { reportError(msg); } @Override public void runTimeError(STMessage msg) { reportError(msg); } @Override public void IOError(STMessage msg) { reportError(msg); } @Override public void internalError(STMessage msg) { reportError(msg); } private void reportError(STMessage msg) { getCodeGenerator().tool.errMgr.toolError(ErrorType.STRING_TEMPLATE_WARNING, msg.cause, msg.toString()); } }); return result; }