/// <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(); }
/// <summary> /// Produces HTML code for a section of the line, with <span class="colorName"> 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()); }
/// <summary> /// Produces HTML code for the line, with <span class="colorName"> 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()); }
/// <summary> /// Produces HTML code for a section of the line, with <span style="..."> 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()); }
/// <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()); }