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("\"}") )); }