internal CssSimpleSelectorSequence(ICssSelectorSequence sequence, CssSimpleSelector otherSelector) : base(CalculateSpecificity(sequence, otherSelector)) { ArgChecker.AssertIsTrue <ArgumentException>(!(otherSelector is CssTypeSelector), "Selector sequence cannot contain more than one type selector."); _typeSelector = sequence.TypeSelector; _otherSelectors = sequence.OtherSelectors.Add(otherSelector); }
internal CssSimpleSelectorSequence(ICssSelectorSequence sequence, CssPseudoElement pseudoElement) : base(CalculateSpecificity(sequence, pseudoElement)) { ArgChecker.AssertIsTrue <ArgumentException>(sequence.Subject.PseudoElement == null, "Selector sequence cannot contain more than one pseudo-element."); _typeSelector = sequence.TypeSelector; _otherSelectors = sequence.OtherSelectors; _pseudoElement = pseudoElement; }
public override void VisitTypeSelector(CssTypeSelector selector) { if (ReferenceEquals(selector, CssSelector.ImpliedUniversal)) { return; } if (selector.NamespacePrefix != null) { _sb.Append(selector.NamespacePrefix).Append('|'); } _sb.Append(selector.LocalName); }
public override void VisitTypeSelector(CssTypeSelector selector) { switch (selector.NamespacePrefix) { case CssSelector.AnyNamespacePrefix: _matcher = selector.LocalName == CssSelector.AnyLocalName ? Always : new ElementLocalNameMatcher(selector.LocalName); break; case "": _matcher = selector.LocalName == CssSelector.AnyLocalName ? (ICssElementMatcher) new ElementNamespaceMatcher(XNamespace.None) : new ElementNameMatcher(XNamespace.None + selector.LocalName); break; case null: var defaultNamespaceName = _namespaceResolver.LookupNamespace(""); if (string.IsNullOrEmpty(defaultNamespaceName)) { _matcher = selector.LocalName == CssSelector.AnyLocalName ? Always : new ElementLocalNameMatcher(selector.LocalName); } else { var defaultNamespace = XNamespace.Get(defaultNamespaceName); _matcher = selector.LocalName == CssSelector.AnyLocalName ? (ICssElementMatcher) new ElementNamespaceMatcher(defaultNamespace) : new ElementNameMatcher(defaultNamespace + selector.LocalName); } break; default: var namespaceName = _namespaceResolver.LookupNamespace(selector.NamespacePrefix); if (string.IsNullOrEmpty(namespaceName)) { _matcher = Never; } else { var ns = XNamespace.Get(namespaceName); _matcher = selector.LocalName == CssSelector.AnyLocalName ? (ICssElementMatcher) new ElementNamespaceMatcher(ns) : new ElementNameMatcher(ns + selector.LocalName); } break; } }
public virtual void VisitTypeSelector(CssTypeSelector selector) { }