Exemplo n.º 1
0
 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);
 }
Exemplo n.º 2
0
 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;
 }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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;
            }
        }
Exemplo n.º 5
0
 public virtual void VisitTypeSelector(CssTypeSelector selector)
 {
 }