Esempio n. 1
0
        public override IT4InfoCollectorState GetNextState(IT4TreeNode element)
        {
            switch (element)
            {
            case IT4FeatureBlock _:
                return(new T4InfoCollectorStateSeenFeature(Interrupter));

            case IT4ExpressionBlock _:
                return(this);

            default:
                if (element.NodeType == T4TokenNodeTypes.NEW_LINE)
                {
                    var builder = new StringBuilder(StringLiteralConverter.EscapeToRegular(Environment.NewLine));
                    return(new T4InfoCollectorStateSeenFeatureAndText(builder, Interrupter, element));
                }
                else if (element.NodeType == T4TokenNodeTypes.RAW_TEXT)
                {
                    var builder = new StringBuilder(Convert(LastToken));
                    return(new T4InfoCollectorStateSeenFeatureAndText(builder, Interrupter, element));
                }

                var data = T4FailureRawData.FromElement(element, "Unexpected element after feature");
                Interrupter.InterruptAfterProblem(data);
                return(this);
            }
        }
 private void AppendHostInitialization()
 {
     AppendIndent();
     Result.AppendLine($"Host = new {T4TextTemplatingFQNs.HostImpl}(");
     PushIndent();
     {
         AppendIndent();
         Result.AppendLine("lifetime,");
         AppendIndent();
         Result.AppendLine($"new {T4TextTemplatingFQNs.Macros}");
         AppendIndent();
         Result.AppendLine("{");
         Result.AppendLine(GenerateExpandableMacros());
         AppendIndent();
         Result.AppendLine("},");
         AppendIndent();
         Result.Append("\"");
         string path = File.PhysicalPsiSourceFile.GetLocation().FullPath;
         Result.Append(StringLiteralConverter.EscapeToRegular(path));
         Result.AppendLine("\",");
         AppendIndent();
         Result.AppendLine("this);");
     }
     PopIndent();
 }
 private string GetReferences() => ReferenceExtractionManager
 .ExtractReferenceLocationsTransitive(File)
 .AggregateString(",\n", (builder, it) => builder
                  .Append("{\"")
                  .Append(StringLiteralConverter.EscapeToRegular(it.FullName))
                  .Append("\", \"")
                  .Append(StringLiteralConverter.EscapeToRegular(it.Location.FullPath))
                  .Append("\"}"));
        private string GenerateExpandableMacros()
        {
            var projectFile = File.GetSourceFile().ToProjectFile();

            if (projectFile == null)
            {
                return("");
            }
            var resolver = File.GetSolution().GetComponent <IT4MacroResolver>();
            var macros   = resolver.ResolveAllLightMacros(projectFile);

            return(macros.AggregateString(",\n", (builder, pair) => builder
                                          .Append("{\"")
                                          .Append(StringLiteralConverter.EscapeToRegular(pair.Key))
                                          .Append("\", \"")
                                          .Append(StringLiteralConverter.EscapeToRegular(pair.Value))
                                          .Append("\"}")
                                          ));
        }