예제 #1
0
        /// <summary>
        /// Code evaluator method
        /// </summary>
        /// <param name="match">Match</param>
        /// <returns>Formatted text</returns>
        private static string CodeEvaluatorSimple(Match match)
        {
            if (!match.Success)
            {
                return(match.Value);
            }

            var options = new HighlightOptions
            {
                Language             = "c#",
                Code                 = match.Groups["inner"].Value,
                DisplayLineNumbers   = false,
                Title                = string.Empty,
                AlternateLineNumbers = false
            };

            var result = match.Value;

            result = Highlight(options, result);
            return(result);
        }
예제 #2
0
        /// <summary>
        /// Returns the formatted text.
        /// </summary>
        /// <param name="options">Whatever options were set in the regex groups.</param>
        /// <param name="text">Send the e.body so it can get formatted.</param>
        /// <returns>The formatted string of the match.</returns>
        private static string Highlight(HighlightOptions options, string text)
        {
            switch (options.Language)
            {
            case "c#":
                var csf = new CSharpFormat
                {
                    LineNumbers = options.DisplayLineNumbers,
                    Alternate   = options.AlternateLineNumbers
                };
                return(WebUtility.HtmlDecode(csf.FormatCode(text)));

            case "vb":
                var vbf = new VisualBasicFormat
                {
                    LineNumbers = options.DisplayLineNumbers,
                    Alternate   = options.AlternateLineNumbers
                };
                return(vbf.FormatCode(text));

            case "js":
                var jsf = new JavaScriptFormat
                {
                    LineNumbers = options.DisplayLineNumbers,
                    Alternate   = options.AlternateLineNumbers
                };
                return(WebUtility.HtmlDecode(jsf.FormatCode(text)));

            case "html":
                var htmlf = new HtmlFormat
                {
                    LineNumbers = options.DisplayLineNumbers,
                    Alternate   = options.AlternateLineNumbers
                };
                text = StripHtml(text).Trim();
                var code = htmlf.FormatCode(WebUtility.HtmlDecode(text)).Trim();
                return(code.Replace("\r\n", "<br />").Replace("\n", "<br />"));

            case "xml":
                var xmlf = new HtmlFormat
                {
                    LineNumbers = options.DisplayLineNumbers,
                    Alternate   = options.AlternateLineNumbers
                };
                text = text.Replace("<br />", "\r\n");
                text = StripHtml(text).Trim();
                var xml = xmlf.FormatCode(WebUtility.HtmlDecode(text)).Trim();
                return(xml.Replace("\r\n", "<br />").Replace("\n", "<br />"));

            case "tsql":
                var tsqlf = new TsqlFormat
                {
                    LineNumbers = options.DisplayLineNumbers,
                    Alternate   = options.AlternateLineNumbers
                };
                return(WebUtility.HtmlDecode(tsqlf.FormatCode(text)));

            case "msh":
                var mshf = new MshFormat
                {
                    LineNumbers = options.DisplayLineNumbers,
                    Alternate   = options.AlternateLineNumbers
                };
                return(WebUtility.HtmlDecode(mshf.FormatCode(text)));
            }

            return(string.Empty);
        }