public override ISelector Produce() { if (!_valid || (_value == null)) { return(null); } var code = PseudoClassNames.Dir.StylesheetFunction(_value); return(SimpleSelector.PseudoClass(code)); }
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); }
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); }
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); }
private void OnClass(Token token) { _state = State.Data; _ready = true; if (token.Type == TokenType.Ident) { Insert(SimpleSelector.Class(token.Data)); } else { _valid = false; } }
private void OnDelim(Token token) { switch (token.Data[0]) { case Symbols.Comma: InsertOr(); _ready = false; break; case Symbols.GreaterThan: Insert(Combinator.Child); _ready = false; break; case Symbols.Plus: Insert(Combinator.AdjacentSibling); _ready = false; break; case Symbols.Tilde: Insert(Combinator.Sibling); _ready = false; break; case Symbols.Asterisk: Insert(SimpleSelector.All); _ready = true; break; case Symbols.Dot: _state = State.Class; _ready = false; break; case Symbols.Pipe: if ((_combinators.Count > 0) && (_combinators.Peek() == Combinator.Descendent)) { Insert(SimpleSelector.Type(string.Empty)); } Insert(Combinator.Namespace); _ready = false; break; default: _valid = false; break; } }
private void OnData(Token token) { switch (token.Type) { case TokenType.SquareBracketOpen: _attrName = null; _attrValue = null; _attrOp = string.Empty; _attrNs = null; _state = State.Attribute; _ready = false; break; case TokenType.Colon: _state = State.PseudoClass; _ready = false; break; case TokenType.Hash: Insert(SimpleSelector.Id(token.Data)); _ready = true; break; case TokenType.Ident: Insert(SimpleSelector.Type(token.Data)); _ready = true; break; case TokenType.Whitespace: Insert(Combinator.Descendent); break; case TokenType.Delim: OnDelim(token); break; case TokenType.Comma: InsertOr(); _ready = false; break; default: _valid = false; break; } }
private ISelector CreateDefault(string name, string value) { return(SimpleSelector.AttrAvailable(name, value)); }