public static string PrintProgram(ProgramSyntax programSyntax, PrettyPrintOptions options) { string indent = options.IndentKindOption == IndentKindOption.Space ? new string(' ', options.IndentSize) : "\t"; string newline = options.NewlineOption switch { NewlineOption.LF => "\n", NewlineOption.CRLF => "\r\n", NewlineOption.CR => "\r", _ => InferNewline(programSyntax) }; var documentBuildVisitor = new DocumentBuildVisitor(); var sb = new StringBuilder(); var document = documentBuildVisitor.BuildDocument(programSyntax); document.Layout(sb, indent, newline); if (options.InsertFinalNewline) { sb.Append(newline); } return(sb.ToString()); }
public static string?PrintProgram(ProgramSyntax programSyntax, PrettyPrintOptions options) { if (programSyntax.GetParseDiagnostics().Count > 0) { return(null); } Debug.Assert(options.IndentSize >= 1 && options.IndentSize <= 1000); string indent = options.IndentKindOption == IndentKindOption.Space ? new string(' ', options.IndentSize) : "\t"; string newline = options.NewlineOption switch { NewlineOption.LF => "\n", NewlineOption.CRLF => "\r\n", NewlineOption.CR => "\r", _ => InferNewline(programSyntax) }; var documentBuildVisitor = new DocumentBuildVisitor(); var sb = new StringBuilder(); var document = documentBuildVisitor.BuildDocument(programSyntax); document.Layout(sb, indent, newline); sb.TrimNewLines(); if (options.InsertFinalNewline) { sb.Append(newline); } return(sb.ToString()); }
public static string PrintSyntax(SyntaxBase syntax, PrettyPrintOptions options) { string indent = options.IndentKindOption == IndentKindOption.Space ? new string(' ', options.IndentSize) : "\t"; var sb = new StringBuilder(); var documentBuildVisitor = new DocumentBuildVisitor(); var document = documentBuildVisitor.BuildDocument(syntax); document.Layout(sb, indent, Environment.NewLine); return(sb.ToString()); }