コード例 #1
0
ファイル: PrettyPrinter.cs プロジェクト: Princetimber/bicep-1
        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());
        }
コード例 #2
0
        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());
        }
コード例 #3
0
        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());
        }