/// <summary> /// Creates a new selector parser using the different factories. /// </summary> internal CssSelectorParser(IBrowsingContext context) { if (context == null) { context = BrowsingContext.NewFrom <ICssSelectorParser>(this); } _attribute = context.GetFactory <IAttributeSelectorFactory>(); _pseudoClass = context.GetFactory <IPseudoClassSelectorFactory>(); _pseudoElement = context.GetFactory <IPseudoElementSelectorFactory>(); }
/// <summary> /// Either creates a fresh selector constructor or gets a (cleaned) /// used one. /// </summary> /// <returns>A selector constructor to use.</returns> public static CssSelectorConstructor NewSelectorConstructor(IAttributeSelectorFactory attributeSelector, IPseudoClassSelectorFactory pseudoClassSelector, IPseudoElementSelectorFactory pseudoElementSelector) { lock (_lock) { if (_selector.Count == 0) { return new CssSelectorConstructor(attributeSelector, pseudoClassSelector, pseudoElementSelector); } return _selector.Pop().Reset(attributeSelector, pseudoClassSelector, pseudoElementSelector); } }
public CssSelectorConstructor(CssTokenizer tokenizer, IAttributeSelectorFactory attributeSelector, IPseudoClassSelectorFactory pseudoClassSelector, IPseudoElementSelectorFactory pseudoElementSelector, Boolean invoked = false) { _tokenizer = tokenizer; _invoked = invoked; _combinators = new Stack <CssCombinator>(); _attributeSelector = attributeSelector; _pseudoClassSelector = pseudoClassSelector; _pseudoElementSelector = pseudoElementSelector; _attrOp = String.Empty; _attrInsensitive = false; _state = State.Data; _valid = true; _ready = true; }
public CssSelectorConstructor Reset(IAttributeSelectorFactory attributeSelector, IPseudoClassSelectorFactory pseudoClassSelector, IPseudoElementSelectorFactory pseudoElementSelector) { _attrName = null; _attrValue = null; _attrNs = null; _attrOp = String.Empty; _state = State.Data; _combinators.Clear(); _temp = null; _group = null; _complex = null; _valid = true; _nested = false; _ready = true; _attributeSelector = attributeSelector; _pseudoClassSelector = pseudoClassSelector; _pseudoElementSelector = pseudoElementSelector; return(this); }
public CssSelectorConstructor(IAttributeSelectorFactory attributeSelector, IPseudoClassSelectorFactory pseudoClassSelector, IPseudoElementSelectorFactory pseudoElementSelector) { _combinators = new Stack <CssCombinator>(); Reset(attributeSelector, pseudoClassSelector, pseudoElementSelector); }
/// <summary> /// Either creates a fresh selector constructor or gets a (cleaned) /// used one. /// </summary> /// <returns>A selector constructor to use.</returns> public static CssSelectorConstructor NewSelectorConstructor(IAttributeSelectorFactory attributeSelector, IPseudoClassSelectorFactory pseudoClassSelector, IPseudoElementSelectorFactory pseudoElementSelector) { lock (_lock) { if (_selector.Count == 0) { return(new CssSelectorConstructor(attributeSelector, pseudoClassSelector, pseudoElementSelector)); } return(_selector.Pop().Reset(attributeSelector, pseudoClassSelector, pseudoElementSelector)); } }