Exemplo n.º 1
0
        public IEnumerable <HtmlElement> GetElementBySelector(IEnumerable <HtmlElement> source, string selectorString)
        {
            if (source == null)
            {
                throw new ArgumentNullException();
            }
            if (selectorString == null)
            {
                throw new ArgumentNullException();
            }

            var selectorsArray = SplitExpressions(selectorString);

            if (selectorsArray.Count() == 0)
            {
                throw new ArgumentException("Invalid selector");
            }

            var handlers = HandlerFactory.GetHandlers();

            var selector = handlers.GetSelector(selectorsArray);


            return(selector.SelectElements(source));
        }
Exemplo n.º 2
0
        public IEnumerable <HtmlElement> SelectElements(IEnumerable <HtmlElement> source)
        {
            var handlers = HandlerFactory.GetHandlers();


            var allSelectedElements = new List <HtmlElement>();

            var leftSelector = handlers.GetSelector(new string[] { _leftSide });

            //right selector error
            var rightSelector = handlers.GetSelector(new string[] { _rightSide });

            var leftSelectedElements = leftSelector.SelectElements(source);


            foreach (var element in leftSelectedElements)
            {
                var descendents      = HtmlHelpers.GetElementAndDescendents(element);
                var selectedElements = rightSelector.SelectElements(descendents);

                allSelectedElements.AddRange(selectedElements);
            }

            return(allSelectedElements);
        }
Exemplo n.º 3
0
        public IEnumerable <HtmlElement> SelectElements(IEnumerable <HtmlElement> source)
        {
            var handlers = HandlerFactory.GetHandlers();

            var leftSelector  = handlers.GetSelector(new string[] { _leftSide });
            var rightSelector = handlers.GetSelector(new string[] { _rightSide });

            var leftSelected = leftSelector.SelectElements(source);

            var rightSelected = rightSelector.SelectElements(source);

            return(leftSelected.Union(rightSelected));
        }
Exemplo n.º 4
0
        private IEnumerable <ISelector> GetSelectors(string[] selectors)
        {
            var handlers     = HandlerFactory.GetHandlers();
            var selectorObjs = new List <ISelector>();



            for (int i = 0; i < selectors.Length; i++)
            {
                var leftSide = selectors[i];

                if (selectors.Length < i + 2)
                {
                    break;
                }

                var rightSide = selectors[i + 1];

                if (leftSide != ">" && rightSide != ">")
                {
                    var selector = handlers.GetSelector(selectors.Skip(i).Take(2).ToArray());
                    selectorObjs.Add(selector);

                    continue;
                }

                if (leftSide == ">")
                {
                    continue;
                }

                if (rightSide == ">")
                {
                    if (selectors.Length < i + 3)
                    {
                        break;
                    }
                    var selector = handlers.GetSelector(selectors.Skip(i).Take(3).ToArray());
                    selectorObjs.Add(selector);
                }
            }

            return(selectorObjs);
        }
Exemplo n.º 5
0
        public IEnumerable <HtmlElement> SelectElements(IEnumerable <HtmlElement> source)
        {
            //fix this



            var handlers      = HandlerFactory.GetHandlers();
            var leftSelector  = handlers.GetSelector(new string[] { _leftSide });
            var rightSelector = handlers.GetSelector(new string[] { _rightSide });

            var leftSelectedElements = GetLeftSelected(source, leftSelector);

            var rightSelectedElements = new List <HtmlElement>();


            foreach (var element in leftSelectedElements)
            {
                var rightSelected = rightSelector.SelectElements(element.Children);
                rightSelectedElements.AddRange(rightSelected);
            }

            return(rightSelectedElements);
        }