Ejemplo n.º 1
0
        public static Selector Parse(string str)
        {
            Selector result = new Selector();

            SelectorReader      reader          = new SelectorReader(str);
            SelectorCombinator  combinator      = null;
            SimpleSelectorChain simpleSelectors = new SimpleSelectorChain();

            while (!reader.EndOfStream)
            {
                switch (reader.Status)
                {
                case SelectorReader.ReadStatus.Combinator:
                    result.Add(combinator, simpleSelectors);
                    combinator      = reader.ReadCombinator();
                    simpleSelectors = new SimpleSelectorChain();
                    break;

                case SelectorReader.ReadStatus.SimpleSelector:
                    SimpleSelector simpleSelector = reader.ReadSimpleSelector();
                    if (simpleSelector.Type == SelectorType.PseudoElement)
                    {
                        result.PseudoElementSelector = simpleSelector;
                    }
                    simpleSelectors.Add(simpleSelector);
                    break;
                }
            }
            result.Add(combinator, simpleSelectors);

            return(result);
        }
Ejemplo n.º 2
0
        public void Add(SelectorCombinator combinator, SimpleSelectorChain selector)
        {
            if (Chain.Count > 0 && combinator == null)
            {
                throw new ArgumentNullException("Combinator could not be null if selector is not in first node of chain.");
            }

            Chain.Add(new Tuple <SelectorCombinator, SimpleSelectorChain>(combinator, selector));
        }