Package csep.example.cake.scoping

Source Code of csep.example.cake.scoping.CakefileScopeProvider

/*
* generated by Xtext
*/
package csep.example.cake.scoping;

import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EReference;
import org.eclipse.xtext.linking.impl.LinkingHelper;
import org.eclipse.xtext.nodemodel.INode;
import org.eclipse.xtext.resource.EObjectDescription;
import org.eclipse.xtext.resource.IEObjectDescription;
import org.eclipse.xtext.resource.XtextResource;
import org.eclipse.xtext.scoping.IScope;
import org.eclipse.xtext.scoping.impl.AbstractDeclarativeScopeProvider;
import org.eclipse.xtext.scoping.impl.SingletonScope;

import com.google.inject.Inject;

import csep.coffeeScript.Block;
import csep.coffeeScript.CoffeeScriptFactory;
import csep.coffeeScript.Id;
import csep.example.cake.cakefile.TaskDeclaration;

/**
* This class contains custom scoping description.
*
* see : http://www.eclipse.org/Xtext/documentation/latest/xtext.html#scoping
* on how and when to use it
*
*/
public class CakefileScopeProvider extends AbstractDeclarativeScopeProvider implements IScopeProviderWithNode {
  @Inject
  private LinkingHelper linkingHelper;
 
  @Inject
  private XtextResource resource;
 
  INode node;
  EObject options;
 
  protected EObject getOptions() {
    if (options == null) {
      options = ((CakefileLinkingResource)resource).getImplicitVariables().get("options");
    }
    return options;
  }
 
  public IScope scope_Id(TaskDeclaration owner, EReference ref) {
    String crossrefName = linkingHelper.getCrossRefNodeAsString(node, true);
    if ("options".equals(crossrefName)) {
      IEObjectDescription description = EObjectDescription.create("options", getOptions());
      return new SingletonScope(description, IScope.NULLSCOPE);
    }
    else {
      // Let superclass handle it
      return null;
    }
  }

  @Override
  public void setNode(INode node) {
    this.node = node;   
  }
}
TOP

Related Classes of csep.example.cake.scoping.CakefileScopeProvider

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.