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:
Yorick Peterse 2014-10-20 09:29:42 +02:00
parent 15ebdb7de4
commit 21c27bf48e
3 changed files with 7 additions and 7 deletions

View File

@ -103,7 +103,7 @@ rule
:call, :call,
'contains', 'contains',
s(:call, 'concat', s(:string, ' '), axis, s(:string, ' ')), s(:call, 'concat', s(:string, ' '), axis, s(:string, ' ')),
s(:string, val[1]) s(:string, " #{val[1]} ")
) )
} }
; ;

View File

@ -4,27 +4,27 @@ describe Oga::CSS::Parser do
context 'classes' do context 'classes' do
example 'parse a class selector' do example 'parse a class selector' do
parse_css('.foo').should == parse_xpath( parse_css('.foo').should == parse_xpath(
'descendant-or-self::*[contains(concat(" ", @class, " "), "foo")]' 'descendant-or-self::*[contains(concat(" ", @class, " "), " foo ")]'
) )
end end
example 'parse a selector for an element with a class' do example 'parse a selector for an element with a class' do
parse_css('foo.bar').should == parse_xpath( parse_css('foo.bar').should == parse_xpath(
'descendant-or-self::foo[contains(concat(" ", @class, " "), "bar")]' 'descendant-or-self::foo[contains(concat(" ", @class, " "), " bar ")]'
) )
end end
example 'parse a selector using multiple classes' do example 'parse a selector using multiple classes' do
parse_css('.foo.bar').should == parse_xpath( parse_css('.foo.bar').should == parse_xpath(
'descendant-or-self::*[contains(concat(" ", @class, " "), "foo") ' \ 'descendant-or-self::*[contains(concat(" ", @class, " "), " foo ") ' \
'and contains(concat(" ", @class, " "), "bar")]' 'and contains(concat(" ", @class, " "), " bar ")]'
) )
end end
example 'parse a selector using a class and an ID' do example 'parse a selector using a class and an ID' do
parse_css('#foo.bar').should == parse_xpath( parse_css('#foo.bar').should == parse_xpath(
'descendant-or-self::*[@id="foo" and ' \ 'descendant-or-self::*[@id="foo" and ' \
'contains(concat(" ", @class, " "), "bar")]' 'contains(concat(" ", @class, " "), " bar ")]'
) )
end end
end end

View File

@ -22,7 +22,7 @@ describe Oga::CSS::Parser do
example 'parse a selector using an ID and a class' do example 'parse a selector using an ID and a class' do
parse_css('.foo#bar').should == parse_xpath( parse_css('.foo#bar').should == parse_xpath(
'descendant-or-self::*[contains(concat(" ", @class, " "), "foo") ' \ 'descendant-or-self::*[contains(concat(" ", @class, " "), " foo ") ' \
'and @id="bar"]' 'and @id="bar"]'
) )
end end