/// <summary> /// Sets the element's position to the XmlReader's position. /// </summary> static void SetPosition(XshdElement element, XmlReader reader) { IXmlLineInfo lineInfo = reader as IXmlLineInfo; if (lineInfo != null) { element.LineNumber = lineInfo.LineNumber; element.ColumnNumber = lineInfo.LinePosition; } }
static Exception Error(XshdElement element, string message) { if (element.LineNumber > 0) { return(new HighlightingDefinitionInvalidException( "Error at line " + element.LineNumber + ":\n" + message)); } else { return(new HighlightingDefinitionInvalidException(message)); } }
IHighlightingDefinition GetDefinition(XshdElement position, string definitionName) { if (definitionName == null) { return(def); } if (resolver == null) { throw Error(position, "Resolving references to other syntax definitions is not possible because the IHighlightingDefinitionReferenceResolver is null."); } IHighlightingDefinition d = resolver.GetDefinition(definitionName); if (d == null) { throw Error(position, "Could not find definition with name '" + definitionName + "'."); } return(d); }
HighlightingRuleSet GetRuleSet(XshdElement position, XshdReference <XshdRuleSet> ruleSetReference) { if (ruleSetReference.InlineElement != null) { return((HighlightingRuleSet)ruleSetReference.InlineElement.AcceptVisitor(this)); } else if (ruleSetReference.ReferencedElement != null) { IHighlightingDefinition definition = GetDefinition(position, ruleSetReference.ReferencedDefinition); HighlightingRuleSet ruleSet = definition.GetNamedRuleSet(ruleSetReference.ReferencedElement); if (ruleSet == null) { throw Error(position, "Could not find rule set named '" + ruleSetReference.ReferencedElement + "'."); } return(ruleSet); } else { return(null); } }
HighlightingColor GetColor(XshdElement position, XshdReference <XshdColor> colorReference) { if (colorReference.InlineElement != null) { return((HighlightingColor)colorReference.InlineElement.AcceptVisitor(this)); } else if (colorReference.ReferencedElement != null) { IHighlightingDefinition definition = GetDefinition(position, colorReference.ReferencedDefinition); HighlightingColor color = definition.GetNamedColor(colorReference.ReferencedElement); if (color == null) { throw Error(position, "Could not find color named '" + colorReference.ReferencedElement + "'."); } return(color); } else { return(null); } }
Regex CreateRegex(XshdElement position, string regex, XshdRegexType regexType) { if (regex == null) { throw Error(position, "Regex missing"); } RegexOptions options = RegexOptions.CultureInvariant | RegexOptions.ExplicitCapture; if (regexType == XshdRegexType.IgnorePatternWhitespace) { options |= RegexOptions.IgnorePatternWhitespace; } if (ignoreCase) { options |= RegexOptions.IgnoreCase; } try { return(new Regex(regex, options)); } catch (ArgumentException ex) { throw Error(position, ex.Message); } }