コード例 #1
0
 /// <summary>
 /// Registers a new <see cref="CodeCommentDecorator"/> with the specified <paramref name="outputVisitor"/>.
 /// </summary>
 public static CodeCommentDecorator Install(IOutputAstVisitor outputVisitor)
 {
     var ccd = new CodeCommentDecorator(outputVisitor.OutputFormatter);
     outputVisitor.BeforeNodeVisit += ccd.AcceptNodeStart;
     outputVisitor.AfterNodeVisit += ccd.AcceptNodeEnd;
     return ccd;
 }
コード例 #2
0
        /// <summary>
        /// Registers a new <see cref="CodeCommentDecorator"/> with the specified <paramref name="outputVisitor"/>.
        /// </summary>
        public static CodeCommentDecorator Install(IOutputAstVisitor outputVisitor)
        {
            var ccd = new CodeCommentDecorator(outputVisitor.OutputFormatter);

            outputVisitor.BeforeNodeVisit += ccd.AcceptNodeStart;
            outputVisitor.AfterNodeVisit  += ccd.AcceptNodeEnd;
            return(ccd);
        }
コード例 #3
0
        /// <summary>
        /// Performs the reverse operation of parsing by serializing the specified <paramref name="compilationUnit"/>
        /// to source code.
        /// </summary>
        ///
        /// <param name="compilationUnit">
        /// A <see cref="CompilationUnit"/> which is to be turned into source code.
        /// </param>
        ///
        /// <returns>
        /// A string representing the source code that would compile to the provided <paramref name="compilationUnit"/>.
        /// </returns>
        public static string GenerateSourceCode(this CompilationUnit compilationUnit)
        {
            var outputVisitor = new CSharpOutputVisitor
            {
                Options =
                {
                    IndentationChar = ' ',
                    TabSize         =   4,
                    IndentSize      =   4,
                }
            };

            using (CodeCommentDecorator.Install(outputVisitor))
            {
                outputVisitor.VisitCompilationUnit(compilationUnit, null);
            }
            return(outputVisitor.Text);
        }