示例#1
0
 internal Parser(ColorCode.ILanguage lang)
 {
     _lang = lang;
     var repo = new ColorCode.Common.LanguageRepository(new Dictionary<string, ColorCode.ILanguage>());
     var compiler = new ColorCode.Compilation.LanguageCompiler(new Dictionary<string, ColorCode.Compilation.CompiledLanguage>());
     _internalParser = new ColorCode.Parsing.LanguageParser(compiler, repo);
 }
示例#2
0
        internal Parser(ColorCode.ILanguage lang)
        {
            _lang = lang;
            var repo     = new ColorCode.Common.LanguageRepository(new Dictionary <string, ColorCode.ILanguage>());
            var compiler = new ColorCode.Compilation.LanguageCompiler(new Dictionary <string, ColorCode.Compilation.CompiledLanguage>());

            _internalParser = new ColorCode.Parsing.LanguageParser(compiler, repo);
        }
示例#3
0
        public void WriteHeader(IStyleSheet styleSheet,
                                ColorCode.ILanguage language,
                                System.IO.TextWriter textWriter)
        {
            ColorCode.Common.Guard.ArgNotNull(styleSheet, "styleSheet");
            ColorCode.Common.Guard.ArgNotNull(textWriter, "textWriter");

            WriteHeaderDivStart(styleSheet, textWriter);
            WriteHeaderPreStart(textWriter);
            textWriter.WriteLine();
        }
示例#4
0
        /// <summary>
        /// Colorizes source code using the specified language, the default formatter, and the default style sheet.
        /// </summary>
        /// <param name="sourceCode">The source code to colorize.</param>
        /// <param name="language">The language to use to colorize the source code.</param>
        /// <returns>The colorized source code.</returns>
        public string Colorize(string sourceCode, ColorCode.ILanguage language)
        {
            System.Text.StringBuilder buffer = new System.Text.StringBuilder(sourceCode.Length * 2);

            using (System.IO.TextWriter writer = new System.IO.StringWriter(buffer))
            {
                Colorize(sourceCode, language, writer);
                writer.Flush();
            }

            return(buffer.ToString());
        }
示例#5
0
        /// <summary>
        /// Colorizes source code using the specified language, formatter, and style sheet.
        /// </summary>
        /// <param name="sourceCode">The source code to colorize.</param>
        /// <param name="language">The language to use to colorize the source code.</param>
        /// <param name="formatter">The formatter to use to colorize the source code.</param>
        /// <param name="styleSheet">The style sheet to use to colorize the source code.</param>
        /// <param name="textWriter">The text writer to which the colorized source code will be written.</param>
        public void Colorize(string sourceCode,
                             ColorCode.ILanguage language,
                             IFormatter formatter,
                             IStyleSheet styleSheet,
                             System.IO.TextWriter textWriter)
        {
            ColorCode.Common.Guard.ArgNotNull(language, "language");
            ColorCode.Common.Guard.ArgNotNull(formatter, "formatter");
            ColorCode.Common.Guard.ArgNotNull(styleSheet, "styleSheet");
            ColorCode.Common.Guard.ArgNotNull(textWriter, "textWriter");

            formatter.WriteHeader(styleSheet, language, textWriter);

            languageParser.Parse(sourceCode, language,
                                 (parsedSourceCode, captures) => formatter.Write(parsedSourceCode, captures, styleSheet, textWriter));

            formatter.WriteFooter(styleSheet, language, textWriter);
        }
示例#6
0
        private string Colorize(string input, ColorCode.ILanguage language, System.Func <string, string> htmlEncode)
        {
            System.Threading.Thread colorizeThread = new System.Threading.Thread(InvokeColorize)
            {
                IsBackground = true
            };
            ColorizeData data = new ColorizeData {
                Input = input, Language = language
            };

            colorizeThread.Start(data);
            if (!colorizeThread.Join(5000)) // wait 5 seconds before killing it
            {
                colorizeThread.Abort();
                data.Output = FormatSyntax(input, htmlEncode);
            }

            return(data.Output);
        }
示例#7
0
 /// <summary>
 /// Colorizes source code using the specified language, the default formatter, and the default style sheet.
 /// </summary>
 /// <param name="sourceCode">The source code to colorize.</param>
 /// <param name="language">The language to use to colorize the source code.</param>
 /// <param name="textWriter">The text writer to which the colorized source code will be written.</param>
 public void Colorize(string sourceCode, ColorCode.ILanguage language, System.IO.TextWriter textWriter)
 {
     Colorize(sourceCode, language, Formatters.Default, StyleSheets.Default, textWriter);
 }