/** * generated by Xtext */ package org.example.expressions.generator; import com.google.common.collect.Iterables; import com.google.inject.Inject; import java.util.List; import org.eclipse.emf.common.util.EList; import org.eclipse.emf.common.util.TreeIterator; import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.xtend2.lib.StringConcatenation; import org.eclipse.xtext.generator.IFileSystemAccess; import org.eclipse.xtext.generator.IGenerator; import org.eclipse.xtext.nodemodel.ICompositeNode; import org.eclipse.xtext.nodemodel.util.NodeModelUtils; import org.eclipse.xtext.xbase.lib.Extension; import org.eclipse.xtext.xbase.lib.Functions.Function1; import org.eclipse.xtext.xbase.lib.IterableExtensions; import org.eclipse.xtext.xbase.lib.IteratorExtensions; import org.eclipse.xtext.xbase.lib.ListExtensions; import org.eclipse.xtext.xbase.lib.Procedures.Procedure1; import org.example.expressions.expressions.AbstractElement; import org.example.expressions.expressions.ExpressionsModel; import org.example.expressions.interpreter.ExpressionsInterpreter; @SuppressWarnings("all") public class ExpressionsGenerator implements IGenerator { @Inject @Extension private ExpressionsInterpreter _expressionsInterpreter; @Override public void doGenerate(final Resource resource, final IFileSystemAccess fsa) { TreeIterator<EObject> _allContents = resource.getAllContents(); Iterable<EObject> _iterable = IteratorExtensions.<EObject>toIterable(_allContents); Iterable<ExpressionsModel> _filter = Iterables.<ExpressionsModel>filter(_iterable, ExpressionsModel.class); final Procedure1<ExpressionsModel> _function = new Procedure1<ExpressionsModel>() { @Override public void apply(final ExpressionsModel it) { StringConcatenation _builder = new StringConcatenation(); URI _uRI = resource.getURI(); String _lastSegment = _uRI.lastSegment(); _builder.append(_lastSegment, ""); _builder.append(".evaluated"); String _interpretExpressions = ExpressionsGenerator.this.interpretExpressions(it); fsa.generateFile(_builder.toString(), _interpretExpressions); } }; IterableExtensions.<ExpressionsModel>forEach(_filter, _function); } public String interpretExpressions(final ExpressionsModel model) { EList<AbstractElement> _elements = model.getElements(); final Function1<AbstractElement, String> _function = new Function1<AbstractElement, String>() { @Override public String apply(final AbstractElement it) { StringConcatenation _builder = new StringConcatenation(); ICompositeNode _node = NodeModelUtils.getNode(it); String _tokenText = NodeModelUtils.getTokenText(_node); _builder.append(_tokenText, ""); _builder.append(" ~> "); Object _interpret = ExpressionsGenerator.this._expressionsInterpreter.interpret(it); _builder.append(_interpret, ""); return _builder.toString(); } }; List<String> _map = ListExtensions.<AbstractElement, String>map(_elements, _function); return IterableExtensions.join(_map, "\n"); } }