/// <summary>
 /// Creates a new HtmlRichTextWriter instance.
 /// </summary>
 /// <param name="htmlWriter">
 /// The text writer where the raw HTML is written to.
 /// The HtmlRichTextWriter does not take ownership of the htmlWriter;
 /// disposing the HtmlRichTextWriter will not dispose the underlying htmlWriter!
 /// </param>
 /// <param name="options">Options that control the HTML output.</param>
 public HtmlRichTextWriter(TextWriter htmlWriter, HtmlOptions options = null)
 {
     if (htmlWriter == null)
     {
         throw new ArgumentNullException("htmlWriter");
     }
     this.htmlWriter = htmlWriter;
     this.options    = options ?? new HtmlOptions();
 }
示例#2
0
        /// <summary>
        /// Produces HTML code for a section of the line, with &lt;span class="colorName"&gt; tags.
        /// </summary>
        public string ToHtml(int startOffset, int endOffset, HtmlOptions options = null)
        {
            StringWriter stringWriter = new StringWriter(CultureInfo.InvariantCulture);

            using (var htmlWriter = new HtmlRichTextWriter(stringWriter, options)) {
                WriteTo(htmlWriter, startOffset, endOffset);
            }
            return(stringWriter.ToString());
        }
示例#3
0
        /// <summary>
        /// Produces HTML code for the line, with &lt;span class="colorName"&gt; tags.
        /// </summary>
        public string ToHtml(HtmlOptions options = null)
        {
            StringWriter stringWriter = new StringWriter(CultureInfo.InvariantCulture);

            using (var htmlWriter = new HtmlRichTextWriter(stringWriter, options)) {
                WriteTo(htmlWriter);
            }
            return(stringWriter.ToString());
        }
示例#4
0
        /// <summary>
        /// Produces HTML code for a section of the line, with &lt;span style="..."&gt; tags.
        /// </summary>
        public string ToHtml(int offset, int length, HtmlOptions options = null)
        {
            StringWriter stringWriter = new StringWriter(CultureInfo.InvariantCulture);

            using (var htmlWriter = new HtmlRichTextWriter(stringWriter, options)) {
                htmlWriter.Write(this, offset, length);
            }
            return(stringWriter.ToString());
        }
示例#5
0
        /// <summary>
        /// Creates a HTML fragment from a part of a document.
        /// </summary>
        /// <param name="document">The document to create HTML from.</param>
        /// <param name="highlighter">The highlighter used to highlight the document. <c>null</c> is valid and will create HTML without any highlighting.</param>
        /// <param name="segment">The part of the document to create HTML for. You can pass <c>null</c> to create HTML for the whole document.</param>
        /// <param name="options">The options for the HTML creation.</param>
        /// <returns>HTML code for the document part.</returns>
        public static string CreateHtmlFragment(IDocument document, IHighlighter highlighter, ISegment segment, HtmlOptions options)
        {
            if (document == null)
            {
                throw new ArgumentNullException("document");
            }
            if (options == null)
            {
                throw new ArgumentNullException("options");
            }
            if (highlighter != null && highlighter.Document != document)
            {
                throw new ArgumentException("Highlighter does not belong to the specified document.");
            }
            if (segment == null)
            {
                segment = new SimpleSegment(0, document.TextLength);
            }

            StringBuilder html             = new StringBuilder();
            int           segmentEndOffset = segment.EndOffset;
            IDocumentLine line             = document.GetLineByOffset(segment.Offset);

            while (line != null && line.Offset < segmentEndOffset)
            {
                HighlightedLine highlightedLine;
                if (highlighter != null)
                {
                    highlightedLine = highlighter.HighlightLine(line.LineNumber);
                }
                else
                {
                    highlightedLine = new HighlightedLine(document, line);
                }
                SimpleSegment s = SimpleSegment.GetOverlap(segment, line);
                if (html.Length > 0)
                {
                    html.AppendLine("<br>");
                }
                html.Append(highlightedLine.ToHtml(s.Offset, s.EndOffset, options));
                line = line.NextLine;
            }
            return(html.ToString());
        }