public GenerationResults Generate(IPsiFile file)
    {
      myFile = file;
      myGeneratedMethodBody = new GenerationResults(CSharpLanguage.Instance, "", GeneratedRangeMapFactory.CreateGeneratedRangeMap(myFile));
      myGeneratedFile = new GenerationResults(CSharpLanguage.Instance, "", GeneratedRangeMapFactory.CreateGeneratedRangeMap(myFile));

      AddOptions(myFile);

      if (myPackage != null)
      {
        foreach (var info in myClassesWithShortNamespace)
        {
          AddClassesOption(info.Definition, info.EndOffset, info.StartOffset, myPackage + "." + info.Text, myPackage.Length + 1);
        }

        foreach (var info in myShortNamespaces)
        {
          string name = info.Text;
          if((name.Length >= myPackage.Length) && (name.Substring(0,myPackage.Length).Equals(myPackage)))
          {
            AddNamespaceOption(info.EndOffset, info.StartOffset, info.Text);
          } else
          {
            AddNamespaceOption(info.EndOffset, info.StartOffset, myPackage + "." + info.Text, myPackage.Length + 1);
          }
        }
      }

      myGeneratedFile.Append(new GenerationResults(CSharpLanguage.Instance, "class ZZZ_Generated_Class{\n void foo(){\n", GeneratedRangeMapFactory.CreateGeneratedRangeMap(myFile)));
      myGeneratedFile.Append(myGeneratedMethodBody);
      myGeneratedFile.Append(new GenerationResults(CSharpLanguage.Instance, "}\n }\n", GeneratedRangeMapFactory.CreateGeneratedRangeMap(myFile)));

      return myGeneratedFile;
    }
Example #2
0
        public GenerationResults Generate(IPsiFile file)
        {
            myFile = file;
            myGeneratedMethodBody = new GenerationResults(CSharpLanguage.Instance, "", GeneratedRangeMapFactory.CreateGeneratedRangeMap(myFile));
            myGeneratedFile       = new GenerationResults(CSharpLanguage.Instance, "", GeneratedRangeMapFactory.CreateGeneratedRangeMap(myFile));

            AddOptions(myFile);

            if (myPackage != null)
            {
                foreach (var info in myClassesWithShortNamespace)
                {
                    AddClassesOption(info.Definition, info.EndOffset, info.StartOffset, myPackage + "." + info.Text, myPackage.Length + 1);
                }

                foreach (var info in myShortNamespaces)
                {
                    string name = info.Text;
                    if ((name.Length >= myPackage.Length) && (name.Substring(0, myPackage.Length).Equals(myPackage)))
                    {
                        AddNamespaceOption(info.EndOffset, info.StartOffset, info.Text);
                    }
                    else
                    {
                        AddNamespaceOption(info.EndOffset, info.StartOffset, myPackage + "." + info.Text, myPackage.Length + 1);
                    }
                }
            }

            myGeneratedFile.Append(new GenerationResults(CSharpLanguage.Instance, "class ZZZ_Generated_Class{\n void foo(){\n", GeneratedRangeMapFactory.CreateGeneratedRangeMap(myFile)));
            myGeneratedFile.Append(myGeneratedMethodBody);
            myGeneratedFile.Append(new GenerationResults(CSharpLanguage.Instance, "}\n }\n", GeneratedRangeMapFactory.CreateGeneratedRangeMap(myFile)));

            return(myGeneratedFile);
        }
        private static ICollection <IPsiSymbol> Build(IPsiFile file)
        {
            var ret = new PsiCacheBuilder();

            file.ProcessDescendants(ret);
            return(ret.GetSymbols());
        }
Example #4
0
 protected PsiDaemonStageProcessBase(IDaemonProcess process, IContextBoundSettingsStore settingsStore)
 {
     myDaemonProcess = process;
     mySettingsStore = settingsStore;
     PsiServices     = process.Solution.GetPsiServices();
     myFile          = PsiDaemonStageBase.GetPsiFile(myDaemonProcess.SourceFile);
 }
        public override IEnumerable <string> VisitPsiFile(IPsiFile psiFile, PsiFmtStageContext context)
        {
            if (!myIsGenerated)
            {
                return(base.VisitPsiFile(psiFile, context));
            }

            return(base.VisitPsiFile(psiFile, context));
        }
        private void VisitFile(IPsiFile element)
        {
            ITreeNode child = element.FirstChild;

            while (child != null)
            {
                if (child is IRuleDeclaration)
                {
                    var declaration = child as IRuleDeclaration;
                    {
                        string name = declaration.DeclaredName;
                        if (myDeclarations.ContainsKey(name))
                        {
                            List <IDeclaration> list = myDeclarations.GetValue(name);
                            list.Add(declaration);
                        }
                        else
                        {
                            var list = new List <IDeclaration> {
                                declaration
                            };
                            myDeclarations.Add(name, list);
                        }
                    }
                }
                child = child.NextSibling;
            }

            child = element.Interfaces;
            if (child != null)
            {
                child = child.FirstChild;
                while (child != null)
                {
                    var declaration = child as IRuleDeclaration;
                    if (declaration != null)
                    {
                        string name = declaration.DeclaredName;
                        if (myDeclarations.ContainsKey(name))
                        {
                            List <IDeclaration> list = myDeclarations.GetValue(name);
                            list.Add(declaration);
                        }
                        else
                        {
                            var list = new List <IDeclaration> {
                                declaration
                            };
                            myDeclarations.Add(name, list);
                        }
                    }
                    child = child.NextSibling;
                }
            }
        }
        protected bool IsSupported(IPsiSourceFile sourceFile)
        {
            if (sourceFile == null || !sourceFile.IsValid())
            {
                return(false);
            }

            IPsiFile psiFile = GetPsiFile(sourceFile);

            return(psiFile != null && psiFile.Language.Is <PsiLanguage>());
        }
Example #8
0
        private void AddOptions(IPsiFile psiFile)
        {
            var child = psiFile.FirstChild;

            while (child != null)
            {
                var optionsDefinition = child as IOptionsDefinition;
                if (optionsDefinition != null)
                {
                    AddOptions(optionsDefinition);
                    return;
                }
                if (!child.IsWhitespaceToken())
                {
                    return;
                }
                child = child.NextSibling;
            }
        }
    private void AddOptions(IPsiFile psiFile)
    {
      var child = psiFile.FirstChild;

      while (child != null)
      {
        var optionsDefinition = child as IOptionsDefinition;
        if (optionsDefinition != null)
        {
          AddOptions(optionsDefinition);
          return;
        }
        if (! child.IsWhitespaceToken())
        {
          return;
        }
        child = child.NextSibling;
      }
    }
    public static IEnumerable<string> GetAplicableKeywords(IPsiFile file, TreeTextRange referenceRange)
    {
      // statements part ...
      //var ret = new HashSet<string>();
      IList<string> list = new List<string>();
      var token = file.FindNodeAt(referenceRange) as ITokenNode;
      if (token == null)
      {
        return list;
      }

      ITreeNode currentNode;
      ITreeNode child;

      if (token.GetTokenType() == PsiTokenType.IDENTIFIER && token.Parent != null)
      {
        currentNode = token.Parent.Parent;
        child = token.Parent;
      }
      else
      {
        currentNode = token.Parent;
        child = token;
      }

      if (currentNode is IRuleDeclaration)
      {
        if (!IsInRuleBody(child))
        {
          if (IsAfterName(child))
          {
            list.Add("extras");
            list.Add("options");
          }
          if (IsBeforeName(child))
          {
            list.Add("abstract");
            list.Add("errorhandling");
            list.Add("interface");
            list.Add("private");
          }
          if (HasNoName(child))
          {
            list.Add("interfaces");
            list.Add("paths");
          }
        }
        else
        {
          list.Add("null");
          list.Add("LIST");
          list.Add("SEP");
        }
      }
      else if (currentNode is IExtrasDefinition)
      {
        list.Add("get");
        list.Add("returnType");
        list.Add("isCashed");
      }
      else if (currentNode is ISimpleExpression)
      {
        list.Add("null");
        list.Add("LIST");
        list.Add("SEP");
      }
      else if (currentNode is IListExpression)
      {
        list.Add("SEP");
      }
      else if (currentNode is IRuleParameters)
      {
        list.Add("cashed");
        list.Add("isCashed");
        list.Add("ROLE");
        list.Add("getter");
      }
      return list;
    }
 public PsiFileStructure([NotNull] IPsiFile file, IContextBoundSettingsStore settingsStore)
     : base(file, settingsStore.EnumEntryIndices(GeneratedCodeSettingsAccessor.GeneratedCodeRegions).ToHashSet())
 {
     myFile = file;
     ProcessFile();
 }
Example #12
0
 public override string VisitPsiFile(IPsiFile psiFileParam, FormattingStageContext context)
 {
     return("");
 }
 private static ICollection<IPsiSymbol> Build(IPsiFile file)
 {
   var ret = new PsiCacheBuilder();
   file.ProcessDescendants(ret);
   return ret.GetSymbols();
 }
Example #14
0
        public static IEnumerable <string> GetAplicableKeywords(IPsiFile file, TreeTextRange referenceRange)
        {
            // statements part ...
            //var ret = new HashSet<string>();
            IList <string> list  = new List <string>();
            var            token = file.FindNodeAt(referenceRange) as ITokenNode;

            if (token == null)
            {
                return(list);
            }

            ITreeNode currentNode;
            ITreeNode child;

            if (token.GetTokenType() == PsiTokenType.IDENTIFIER && token.Parent != null)
            {
                currentNode = token.Parent.Parent;
                child       = token.Parent;
            }
            else
            {
                currentNode = token.Parent;
                child       = token;
            }

            if (currentNode is IRuleDeclaration)
            {
                if (!IsInRuleBody(child))
                {
                    if (IsAfterName(child))
                    {
                        list.Add("extras");
                        list.Add("options");
                    }
                    if (IsBeforeName(child))
                    {
                        list.Add("abstract");
                        list.Add("errorhandling");
                        list.Add("interface");
                        list.Add("private");
                    }
                    if (HasNoName(child))
                    {
                        list.Add("interfaces");
                        list.Add("paths");
                    }
                }
                else
                {
                    list.Add("null");
                    list.Add("LIST");
                    list.Add("SEP");
                }
            }
            else if (currentNode is IExtrasDefinition)
            {
                list.Add("get");
                list.Add("returnType");
                list.Add("isCashed");
            }
            else if (currentNode is ISimpleExpression)
            {
                list.Add("null");
                list.Add("LIST");
                list.Add("SEP");
            }
            else if (currentNode is IListExpression)
            {
                list.Add("SEP");
            }
            else if (currentNode is IRuleParameters)
            {
                list.Add("cashed");
                list.Add("isCashed");
                list.Add("ROLE");
                list.Add("getter");
            }
            return(list);
        }
 public PsiFileStructure([NotNull] IPsiFile file, IContextBoundSettingsStore settingsStore)
   : base(file, settingsStore.EnumEntryIndices(GeneratedCodeSettingsAccessor.GeneratedCodeRegions).ToHashSet())
 {
   myFile = file;
   ProcessFile();
 }
    private void VisitFile(IPsiFile element)
    {
      ITreeNode child = element.FirstChild;
      while (child != null)
      {
        if (child is IRuleDeclaration)
        {
          var declaration = child as IRuleDeclaration;
          {
            string name = declaration.DeclaredName;
            if (myDeclarations.ContainsKey(name))
            {
              List<IDeclaration> list = myDeclarations.GetValue(name);
              list.Add(declaration);
            }
            else
            {
              var list = new List<IDeclaration> { declaration };
              myDeclarations.Add(name, list);
            }
          }
        }
        child = child.NextSibling;
      }

      child = element.Interfaces;
      if (child != null)
      {
        child = child.FirstChild;
        while (child != null)
        {
          var declaration = child as IRuleDeclaration;
          if (declaration != null)
          {
            string name = declaration.DeclaredName;
            if (myDeclarations.ContainsKey(name))
            {
              List<IDeclaration> list = myDeclarations.GetValue(name);
              list.Add(declaration);
            }
            else
            {
              var list = new List<IDeclaration> { declaration };
              myDeclarations.Add(name, list);
            }
          }
          child = child.NextSibling;
        }
      }
    }