Пример #1
0
        /// <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>();
        }
Пример #2
0
        /// <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));
            }
        }
Пример #3
0
		/// <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;
 }
Пример #5
0
 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);
 }
Пример #6
0
 public CssSelectorConstructor(IAttributeSelectorFactory attributeSelector, IPseudoClassSelectorFactory pseudoClassSelector, IPseudoElementSelectorFactory pseudoElementSelector)
 {
     _combinators = new Stack <CssCombinator>();
     Reset(attributeSelector, pseudoClassSelector, pseudoElementSelector);
 }