");
if (ShowLineNumbers)
{
b.Append("');
b.Append(lineNumber.ToString().PadLeft(longestNumberLength));
b.Append(": ");
b.Append("");
}
if (lineSegment.Words.Count == 0)
{
b.Append(" ");
}
else
{
PrintWords(lineSegment, b);
}
b.AppendLine("");
lineNumber++;
}
b.AppendLine("");
foreach (LineSegment lineSegment in document.LineSegmentCollection)
{
PrintWords(lineSegment, b);
b.AppendLine();
}
b.AppendLine("");
}
return b.ToString();
}
void PrintWords(LineSegment lineSegment, StringBuilder b)
{
string currentSpan = null;
foreach (TextWord word in lineSegment.Words)
{
if (word.Type == TextWordType.Space)
{
b.Append(' ');
}
else if (word.Type == TextWordType.Tab)
{
b.Append('\t');
}
else
{
string newSpan = GetStyle(word);
if (currentSpan != newSpan)
{
if (currentSpan != null) b.Append("");
if (newSpan != null)
{
b.Append("');
}
currentSpan = newSpan;
}
b.Append(HtmlEncode(word.Word));
}
}
if (currentSpan != null) b.Append("");
}
static string HtmlEncode(string word)
{
return word.Replace("&", "&").Replace("<", "<").Replace(">", ">");
}
void WriteStyle(string style, StringBuilder b)
{
if (CreateStylesheet)
{
b.Append(" class=\"");
b.Append(GetClass(style));
b.Append('"');
}
else
{
b.Append(" style='");
b.Append(style);
b.Append("'");
}
}
string GetStyle(TextWord word)
{
if (word.SyntaxColor == null || word.SyntaxColor.ToString() == currentDefaultTextColor.ToString())
return null;
string style = "color: " + ColorToString(word.Color) + ";";
if (word.Bold)
{
style += " font-weight: bold;";
}
if (word.Italic)
{
style += " font-style: italic;";
}
if (word.SyntaxColor.HasBackground)
{
style += " background-color: " + ColorToString(word.SyntaxColor.BackgroundColor) + ";";
}
return style;
}
static string ColorToString(System.Drawing.Color color)
{
return "#" + color.R.ToString("x2") + color.G.ToString("x2") + color.B.ToString("x2");
}
}
}