public EvaluatedTemplate(Codetemplate template) { TemplateBody body = template.getBody(); StringBuilder buffer = new StringBuilder(); StringBuilder original = new StringBuilder(); mappedOffsetHints = Lists.newArrayList(); int lastOffset = 0; for(TemplatePart part: body.getParts()) { ICompositeNode node = NodeModelUtils.getNode(part); if (node != null) { mappedOffsetHints.add(Tuples.create(buffer.length(), node.getTotalOffset())); lastOffset = node.getTotalOffset() + node.getTotalLength(); original.append(node.getText()); if (part instanceof Literal) { buffer.append(((Literal) part).getValue()); } else if (part instanceof Dollar) { buffer.append("$"); } else if (part instanceof Variable) { if (((Variable) part).getName() != null) { buffer.append(((Variable) part).getName()); } } } } mappedOffsetHints.add(Tuples.create(buffer.length(), lastOffset)); evaluatedResult = buffer.toString(); originalTemplate = original.toString(); }
/** * Constraint: * value=LiteralValue */ protected void sequence_Literal(EObject context, Literal semanticObject) { if(errorAcceptor != null) { if(transientValues.isValueTransient(semanticObject, TemplatesPackage.Literals.LITERAL__VALUE) == ValueTransient.YES) errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, TemplatesPackage.Literals.LITERAL__VALUE)); } INodesForEObjectProvider nodes = createNodeProvider(semanticObject); SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes); feeder.accept(grammarAccess.getLiteralAccess().getValueLiteralValueParserRuleCall_0(), semanticObject.getValue()); feeder.finish(); }