public void Visit(AggregateSelectorList selector) { if (selector.Delimiter == ",") { var matches = _matches.ToList(); foreach (var sel in selector.Select(s => new { Selector = s, Specificity = s.GetSpecificity()}).OrderByDescending(s => s.Specificity)) { _matches = matches; sel.Selector.Visit(this); if (_matches.Any()) { this.MatchSpecificity = sel.Specificity; return; } } } else { foreach (var sel in selector) { sel.Visit(this); if (!_matches.Any()) return; } } }
private void VisitBaseSelector(BaseSelector selector) { AggregateSelectorList aggregateSelectorList = selector as AggregateSelectorList; if (aggregateSelectorList != null) { this.VisitSelectorList(aggregateSelectorList); } else { ComplexSelector complexSelector = selector as ComplexSelector; if (complexSelector != null) { this.VisitComplexSelector(complexSelector); } else { SimpleSelector simpleSelector = selector as SimpleSelector; if (simpleSelector != null) { this.VisitSimpleSelector(simpleSelector.ToString()); } } } }
public void Visit(AggregateSelectorList selector) { bool first = true; foreach (var sel in selector) { if (!first) _writer.Write(selector.Delimiter); Indentation++; sel.Visit(this); Indentation--; first = false; } }
private void VisitSelectorList(AggregateSelectorList selectorList) { if (selectorList.Delimiter == ",") { foreach (BaseSelector current in selectorList) { this.VisitBaseSelector(current); } } else if (selectorList.Delimiter == string.Empty) { this.VisitSimpleSelector(selectorList.ToString()); } else { this.m_Errors.AddSemanticError(StyleSheetImportErrorCode.InvalidSelectorListDelimiter, selectorList.Delimiter); } }
string ExtractSimpleSelector(BaseSelector selector) { SimpleSelector simpleSelector = selector as SimpleSelector; if (simpleSelector != null) { return(selector.ToString()); } AggregateSelectorList selectorList = selector as AggregateSelectorList; // Work around a strange parser issue where sometimes simple selectors // are wrapped inside SelectorList with no delimiter if (selectorList != null && selectorList.Delimiter == string.Empty) { return(selectorList.ToString()); } return(string.Empty); }
void VisitSelectorList(AggregateSelectorList selectorList) { // OR selectors, just create an entry for each of them if (selectorList.Delimiter == ",") { foreach (BaseSelector selector in selectorList) { VisitBaseSelector(selector); } } // Work around a strange parser issue where sometimes simple selectors // are wrapped inside SelectorList with no delimiter else if (selectorList.Delimiter == string.Empty) { VisitSimpleSelector(selectorList.ToString()); } else { m_Errors.AddSemanticError(StyleSheetImportErrorCode.InvalidSelectorListDelimiter, selectorList.Delimiter); } }
private string ExtractSimpleSelector(BaseSelector selector) { SimpleSelector simpleSelector = selector as SimpleSelector; string result; if (simpleSelector != null) { result = selector.ToString(); } else { AggregateSelectorList aggregateSelectorList = selector as AggregateSelectorList; if (aggregateSelectorList != null && aggregateSelectorList.Delimiter == string.Empty) { result = aggregateSelectorList.ToString(); } else { result = string.Empty; } } return(result); }
public void Visit(AggregateSelectorList selector) { foreach (var sel in selector) sel.Visit(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(new UnknownSelector(""), _combinator); _currentSelector = selector; } else { _combinator = Combinator.Descendent; _hasCombinator = false; _currentSelector = selector; } } }
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; }