Surround class values with spaces.
When using a CSS class selector the resulting XPath string passed to contains() should be surrounded by spaces.
This commit is contained in:
		
							parent
							
								
									15ebdb7de4
								
							
						
					
					
						commit
						21c27bf48e
					
				| 
						 | 
				
			
			@ -103,7 +103,7 @@ rule
 | 
			
		|||
          :call,
 | 
			
		||||
          'contains',
 | 
			
		||||
          s(:call, 'concat', s(:string, ' '), axis, s(:string, ' ')),
 | 
			
		||||
          s(:string, val[1])
 | 
			
		||||
          s(:string, " #{val[1]} ")
 | 
			
		||||
        )
 | 
			
		||||
      }
 | 
			
		||||
    ;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,27 +4,27 @@ describe Oga::CSS::Parser do
 | 
			
		|||
  context 'classes' do
 | 
			
		||||
    example 'parse a class selector' do
 | 
			
		||||
      parse_css('.foo').should == parse_xpath(
 | 
			
		||||
        'descendant-or-self::*[contains(concat(" ", @class, " "), "foo")]'
 | 
			
		||||
        'descendant-or-self::*[contains(concat(" ", @class, " "), " foo ")]'
 | 
			
		||||
      )
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    example 'parse a selector for an element with a class' do
 | 
			
		||||
      parse_css('foo.bar').should == parse_xpath(
 | 
			
		||||
        'descendant-or-self::foo[contains(concat(" ", @class, " "), "bar")]'
 | 
			
		||||
        'descendant-or-self::foo[contains(concat(" ", @class, " "), " bar ")]'
 | 
			
		||||
      )
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    example 'parse a selector using multiple classes' do
 | 
			
		||||
      parse_css('.foo.bar').should == parse_xpath(
 | 
			
		||||
        'descendant-or-self::*[contains(concat(" ", @class, " "), "foo") ' \
 | 
			
		||||
          'and contains(concat(" ", @class, " "), "bar")]'
 | 
			
		||||
        'descendant-or-self::*[contains(concat(" ", @class, " "), " foo ") ' \
 | 
			
		||||
          'and contains(concat(" ", @class, " "), " bar ")]'
 | 
			
		||||
      )
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    example 'parse a selector using a class and an ID' do
 | 
			
		||||
      parse_css('#foo.bar').should == parse_xpath(
 | 
			
		||||
        'descendant-or-self::*[@id="foo" and ' \
 | 
			
		||||
          'contains(concat(" ", @class, " "), "bar")]'
 | 
			
		||||
          'contains(concat(" ", @class, " "), " bar ")]'
 | 
			
		||||
      )
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -22,7 +22,7 @@ describe Oga::CSS::Parser do
 | 
			
		|||
 | 
			
		||||
    example 'parse a selector using an ID and a class' do
 | 
			
		||||
      parse_css('.foo#bar').should == parse_xpath(
 | 
			
		||||
        'descendant-or-self::*[contains(concat(" ", @class, " "), "foo") ' \
 | 
			
		||||
        'descendant-or-self::*[contains(concat(" ", @class, " "), " foo ") ' \
 | 
			
		||||
          'and @id="bar"]'
 | 
			
		||||
      )
 | 
			
		||||
    end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue