示例#1
0
        private void PrasePseudoClassFunctionEnd(Block token)
        {
            _selectorOperation = SelectorOperation.Data;

            if (token.GrammarSegment != GrammarSegment.ParenClose)
            {
                return;
            }

            switch (_attributeName)
            {
            case PseudoSelectorPrefix.PseudoFunctionNthchild:
                Insert(GetChildSelector <NthFirstChildSelector>());
                break;

            case PseudoSelectorPrefix.PseudoFunctionNthlastchild:
                Insert(GetChildSelector <NthLastChildSelector>());
                break;

            case PseudoSelectorPrefix.PseudoFunctionNthOfType:
                Insert(GetChildSelector <NthOfTypeSelector>());
                break;

            case PseudoSelectorPrefix.PseudoFunctionNthLastOfType:
                Insert(GetChildSelector <NthLastOfTypeSelector>());
                break;

            case PseudoSelectorPrefix.PseudoFunctionNot:
            {
                var selector = _nestedSelectorFactory.GetSelector();
                var code     = string.Format("{0}({1})", PseudoSelectorPrefix.PseudoFunctionNot, selector);
                Insert(SimpleSelector.PseudoClass(code));
                break;
            }

            case PseudoSelectorPrefix.PseudoFunctionDir:
            {
                var code = string.Format("{0}({1})", PseudoSelectorPrefix.PseudoFunctionDir, _attributeValue);
                Insert(SimpleSelector.PseudoClass(code));
                break;
            }

            case PseudoSelectorPrefix.PseudoFunctionLang:
            {
                var code = string.Format("{0}({1})", PseudoSelectorPrefix.PseudoFunctionLang, _attributeValue);
                Insert(SimpleSelector.PseudoClass(code));
                break;
            }

            case PseudoSelectorPrefix.PseudoFunctionContains:
            {
                var code = string.Format("{0}({1})", PseudoSelectorPrefix.PseudoFunctionContains, _attributeValue);
                Insert(SimpleSelector.PseudoClass(code));
                break;
            }
            }
        }
示例#2
0
 public override ISelector Produce()
 {
     if (_valid && (_value != null))
     {
         var code = PseudoClassNames.Contains.StylesheetFunction(_value);
         return(SimpleSelector.PseudoClass(code));
     }
     return(null);
 }
示例#3
0
            public override ISelector Produce()
            {
                if (!_valid || (_value == null))
                {
                    return(null);
                }

                var code = PseudoClassNames.Dir.StylesheetFunction(_value);

                return(SimpleSelector.PseudoClass(code));
            }
示例#4
0
            public override ISelector Produce()
            {
                var valid = _selector.IsValid;
                var sel   = _selector.GetResult();

                if (valid)
                {
                    var code = PseudoClassNames.HostContext.StylesheetFunction(sel.Text);
                    return(SimpleSelector.PseudoClass(code));
                }
                return(null);
            }
示例#5
0
            public override ISelector Produce()
            {
                var valid = _selector.IsValid;
                var sel   = _selector.GetResult();

                if (valid)
                {
                    var code = PseudoClassNames.Matches.StylesheetFunction(sel.Text);
                    return(SimpleSelector.PseudoClass(/*el => sel.Match(el),*/ code));
                }
                return(null);
            }
示例#6
0
            public override ISelector Produce()
            {
                var valid = _nested.IsValid;
                var sel   = _nested.GetResult();

                if (valid)
                {
                    var code = PseudoClassNames.Has.StylesheetFunction(sel.Text);
                    return(SimpleSelector.PseudoClass(/*el => el.ChildNodes.QuerySelector(sel) != null,*/ code));
                }
                return(null);
            }
示例#7
0
        private static BaseSelector GetPseudoSelector(Block token)
        {
            switch (((SymbolBlock)token).Value)
            {
            case PseudoSelectorPrefix.PseudoRoot:
                return(SimpleSelector.PseudoClass(PseudoSelectorPrefix.PseudoRoot));

            case PseudoSelectorPrefix.PseudoFirstOfType:
                return(SimpleSelector.PseudoClass(PseudoSelectorPrefix.PseudoFirstOfType));

            case PseudoSelectorPrefix.PseudoLastoftype:
                return(SimpleSelector.PseudoClass(PseudoSelectorPrefix.PseudoLastoftype));

            case PseudoSelectorPrefix.PseudoOnlychild:
                return(SimpleSelector.PseudoClass(PseudoSelectorPrefix.PseudoOnlychild));

            case PseudoSelectorPrefix.PseudoOnlyOfType:
                return(SimpleSelector.PseudoClass(PseudoSelectorPrefix.PseudoOnlyOfType));

            case PseudoSelectorPrefix.PseudoFirstchild:
                return(FirstChildSelector.Instance);

            case PseudoSelectorPrefix.PseudoLastchild:
                return(LastChildSelector.Instance);

            case PseudoSelectorPrefix.PseudoEmpty:
                return(SimpleSelector.PseudoClass(PseudoSelectorPrefix.PseudoEmpty));

            case PseudoSelectorPrefix.PseudoLink:
                return(SimpleSelector.PseudoClass(PseudoSelectorPrefix.PseudoLink));

            case PseudoSelectorPrefix.PseudoVisited:
                return(SimpleSelector.PseudoClass(PseudoSelectorPrefix.PseudoVisited));

            case PseudoSelectorPrefix.PseudoActive:
                return(SimpleSelector.PseudoClass(PseudoSelectorPrefix.PseudoActive));

            case PseudoSelectorPrefix.PseudoHover:
                return(SimpleSelector.PseudoClass(PseudoSelectorPrefix.PseudoHover));

            case PseudoSelectorPrefix.PseudoFocus:
                return(SimpleSelector.PseudoClass(PseudoSelectorPrefix.PseudoFocus));

            case PseudoSelectorPrefix.PseudoTarget:
                return(SimpleSelector.PseudoClass(PseudoSelectorPrefix.PseudoTarget));

            case PseudoSelectorPrefix.PseudoEnabled:
                return(SimpleSelector.PseudoClass(PseudoSelectorPrefix.PseudoEnabled));

            case PseudoSelectorPrefix.PseudoDisabled:
                return(SimpleSelector.PseudoClass(PseudoSelectorPrefix.PseudoDisabled));

            case PseudoSelectorPrefix.PseudoDefault:
                return(SimpleSelector.PseudoClass(PseudoSelectorPrefix.PseudoDefault));

            case PseudoSelectorPrefix.PseudoChecked:
                return(SimpleSelector.PseudoClass(PseudoSelectorPrefix.PseudoChecked));

            case PseudoSelectorPrefix.PseudoIndeterminate:
                return(SimpleSelector.PseudoClass(PseudoSelectorPrefix.PseudoIndeterminate));

            case PseudoSelectorPrefix.PseudoUnchecked:
                return(SimpleSelector.PseudoClass(PseudoSelectorPrefix.PseudoUnchecked));

            case PseudoSelectorPrefix.PseudoValid:
                return(SimpleSelector.PseudoClass(PseudoSelectorPrefix.PseudoValid));

            case PseudoSelectorPrefix.PseudoInvalid:
                return(SimpleSelector.PseudoClass(PseudoSelectorPrefix.PseudoInvalid));

            case PseudoSelectorPrefix.PseudoRequired:
                return(SimpleSelector.PseudoClass(PseudoSelectorPrefix.PseudoRequired));

            case PseudoSelectorPrefix.PseudoReadonly:
                return(SimpleSelector.PseudoClass(PseudoSelectorPrefix.PseudoReadonly));

            case PseudoSelectorPrefix.PseudoReadwrite:
                return(SimpleSelector.PseudoClass(PseudoSelectorPrefix.PseudoReadwrite));

            case PseudoSelectorPrefix.PseudoInrange:
                return(SimpleSelector.PseudoClass(PseudoSelectorPrefix.PseudoInrange));

            case PseudoSelectorPrefix.PseudoOutofrange:
                return(SimpleSelector.PseudoClass(PseudoSelectorPrefix.PseudoOutofrange));

            case PseudoSelectorPrefix.PseudoOptional:
                return(SimpleSelector.PseudoClass(PseudoSelectorPrefix.PseudoOptional));

            case PseudoSelectorPrefix.PseudoElementBefore:
                return(SimpleSelector.PseudoClass(PseudoSelectorPrefix.PseudoElementBefore));

            case PseudoSelectorPrefix.PseudoElementAfter:
                return(SimpleSelector.PseudoClass(PseudoSelectorPrefix.PseudoElementAfter));

            case PseudoSelectorPrefix.PseudoElementFirstline:
                return(SimpleSelector.PseudoClass(PseudoSelectorPrefix.PseudoElementFirstline));

            case PseudoSelectorPrefix.PseudoElementFirstletter:
                return(SimpleSelector.PseudoClass(PseudoSelectorPrefix.PseudoElementFirstletter));

            default:
                return(SimpleSelector.PseudoClass(token.ToString()));
            }
        }