// // // // // $Revision$ // using System; using System.Xml; namespace ICSharpCode.TextEditor.Document { public sealed class Span { bool stopEOL; HighlightColor color; HighlightColor beginColor; HighlightColor endColor; char[] begin; char[] end; string name; string rule; HighlightRuleSet ruleSet; char escapeCharacter; bool ignoreCase; bool isBeginSingleWord; bool? isBeginStartOfLine; bool isEndSingleWord; internal HighlightRuleSet RuleSet { get { return ruleSet; } set { ruleSet = value; } } public bool IgnoreCase { get { return ignoreCase; } set { ignoreCase = value; } } public bool StopEOL { get { return stopEOL; } } public bool? IsBeginStartOfLine { get { return isBeginStartOfLine; } } public bool IsBeginSingleWord { get { return isBeginSingleWord; } } public bool IsEndSingleWord { get { return isEndSingleWord; } } public HighlightColor Color { get { return color; } } public HighlightColor BeginColor { get { if(beginColor != null) { return beginColor; } else { return color; } } } public HighlightColor EndColor { get { return endColor!=null ? endColor : color; } } public char[] Begin { get { return begin; } } public char[] End { get { return end; } } public string Name { get { return name; } } public string Rule { get { return rule; } } /// /// Gets the escape character of the span. The escape character is a character that can be used in front /// of the span end to make it not end the span. The escape character followed by another escape character /// means the escape character was escaped like in @"a "" b" literals in C#. /// The default value '\0' means no escape character is allowed. /// public char EscapeCharacter { get { return escapeCharacter; } } public Span(XmlElement span) { color = new HighlightColor(span); if (span.HasAttribute("rule")) { rule = span.GetAttribute("rule"); } if (span.HasAttribute("escapecharacter")) { escapeCharacter = span.GetAttribute("escapecharacter")[0]; } name = span.GetAttribute("name"); if (span.HasAttribute("stopateol")) { stopEOL = Boolean.Parse(span.GetAttribute("stopateol")); } begin = span["Begin"].InnerText.ToCharArray(); beginColor = new HighlightColor(span["Begin"], color); if (span["Begin"].HasAttribute("singleword")) { this.isBeginSingleWord = Boolean.Parse(span["Begin"].GetAttribute("singleword")); } if (span["Begin"].HasAttribute("startofline")) { this.isBeginStartOfLine = Boolean.Parse(span["Begin"].GetAttribute("startofline")); } if (span["End"] != null) { end = span["End"].InnerText.ToCharArray(); endColor = new HighlightColor(span["End"], color); if (span["End"].HasAttribute("singleword")) { this.isEndSingleWord = Boolean.Parse(span["End"].GetAttribute("singleword")); } } } } }