private void InsertCommaDelimited() { if (_currentSelector == null) { return; } if (_aggregateSelectorList == null) { _aggregateSelectorList = new AggregateSelectorList(","); } if (_complexSelector != null) { _complexSelector.ConcludeSelector(_currentSelector); _aggregateSelectorList.AppendSelector(_complexSelector); _complexSelector = null; } else { _aggregateSelectorList.AppendSelector(_currentSelector); } _currentSelector = null; }
internal SelectorFactory ResetFactory() { _attributeName = null; _attributeValue = null; _attributeOperator = string.Empty; _selectorOperation = SelectorOperation.Data; _combinator = Combinator.Descendent; _hasCombinator = false; _currentSelector = null; _aggregateSelectorList = null; _complexSelector = null; return(this); }
private void Insert(BaseSelector selector) { if (_currentSelector != null) { if (!_hasCombinator) { var compound = _currentSelector as AggregateSelectorList; if (compound == null) { compound = new AggregateSelectorList(""); compound.AppendSelector(_currentSelector); } compound.AppendSelector(selector); _currentSelector = compound; } else { if (_complexSelector == null) { _complexSelector = new ComplexSelector(); } _complexSelector.AppendSelector(_currentSelector, _combinator); _combinator = Combinator.Descendent; _hasCombinator = false; _currentSelector = selector; } } else { if (_currentSelector == null && _complexSelector == null && _combinator == Combinator.Namespace) { _complexSelector = new ComplexSelector(); _complexSelector.AppendSelector(SimpleSelector.Type(""), _combinator); _currentSelector = selector; } else { _combinator = Combinator.Descendent; _hasCombinator = false; _currentSelector = selector; } } }
BaseSelector ObfuscateSelectors(BaseSelector selector) { Type ruleType = selector.GetType(); if (ruleType == typeof(SimpleSelector)) { string obf = ObfuscateSelectorPart(selector.ToString()); if (obf == null) return selector; else return new SimpleSelector(obf); } if (ruleType == typeof(ComplexSelector)) { var obf = new ComplexSelector(); var cs = (ComplexSelector)selector; foreach (var sel in cs) obf.AppendSelector(ObfuscateSelectors(sel.Selector), sel.Delimiter); return obf; } if (ruleType == typeof(AggregateSelectorList)) { var cs = (AggregateSelectorList)selector; var obf = new AggregateSelectorList(cs.Delimiter); foreach (BaseSelector sel in cs) obf.AppendSelector(ObfuscateSelectors(sel)); return obf; } if (ruleType == typeof(MultipleSelectorList)) { var obf = new MultipleSelectorList(); var cs = (MultipleSelectorList)selector; foreach (BaseSelector sel in cs) obf.AppendSelector(ObfuscateSelectors(sel)); return obf; } return selector; }