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)); }
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); }
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)); }
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); }
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); }