Example #1
0
 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;
     }
   }
 }
Example #2
0
        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;
   }
 }
Example #4
0
 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);
     }
 }
Example #7
0
        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;
    }