diff --git a/lib/oga/css/parser.y b/lib/oga/css/parser.y index 3d91e78..5bc66a1 100644 --- a/lib/oga/css/parser.y +++ b/lib/oga/css/parser.y @@ -117,16 +117,16 @@ rule pseudo_class # :root - : pseudo_name { s(:pseudo, val[0]) } + : pseudo_name { s(:pseudo, nil, val[0]) } # x:root - | path_member pseudo_name { s(:pseudo, val[1], val[0]) } + | path_member pseudo_name { s(:pseudo, val[0], val[1]) } # :nth-child(2) - | pseudo_name pseudo_args { s(:pseudo, val[0], nil, val[1]) } + | pseudo_name pseudo_args { s(:pseudo, nil, val[0], val[1]) } # x:nth-child(2) - | path_member pseudo_name pseudo_args { s(:pseudo, val[1], val[0], val[2]) } + | path_member pseudo_name pseudo_args { s(:pseudo, val[0], val[1], val[2]) } ; pseudo_name diff --git a/spec/oga/css/parser/axes_spec.rb b/spec/oga/css/parser/axes_spec.rb index 64a0572..ee595b1 100644 --- a/spec/oga/css/parser/axes_spec.rb +++ b/spec/oga/css/parser/axes_spec.rb @@ -77,7 +77,7 @@ describe Oga::CSS::Parser do example 'parse a pseudo class followed by the ~ axis' do parse_css('x:root ~ a').should == s( :following, - s(:pseudo, 'root', s(:test, nil, 'x')), + s(:pseudo, s(:test, nil, 'x'), 'root'), s(:test, nil, 'a') ) end @@ -86,7 +86,7 @@ describe Oga::CSS::Parser do parse_css('a ~ x:root').should == s( :following, s(:test, nil, 'a'), - s(:pseudo, 'root', s(:test, nil, 'x')) + s(:pseudo, s(:test, nil, 'x'), 'root') ) end end diff --git a/spec/oga/css/parser/classes_spec.rb b/spec/oga/css/parser/classes_spec.rb index c879584..23fb13b 100644 --- a/spec/oga/css/parser/classes_spec.rb +++ b/spec/oga/css/parser/classes_spec.rb @@ -19,13 +19,13 @@ describe Oga::CSS::Parser do end example 'parse a selector using a class and a pseudo class' do - parse_css('.foo:root').should == s(:pseudo, 'root', s(:class, nil, 'foo')) + parse_css('.foo:root').should == s(:pseudo, s(:class, nil, 'foo'), 'root') end example 'parse a selector using a pseudo class and a class' do parse_css('x:root.foo').should == s( :class, - s(:pseudo, 'root', s(:test, nil, 'x')), + s(:pseudo, s(:test, nil, 'x'), 'root'), 'foo' ) end diff --git a/spec/oga/css/parser/ids_spec.rb b/spec/oga/css/parser/ids_spec.rb index d93ea6e..48cd85e 100644 --- a/spec/oga/css/parser/ids_spec.rb +++ b/spec/oga/css/parser/ids_spec.rb @@ -15,13 +15,13 @@ describe Oga::CSS::Parser do end example 'parse a selector using an ID and a pseudo class' do - parse_css('#foo:root').should == s(:pseudo, 'root', s(:id, nil, 'foo')) + parse_css('#foo:root').should == s(:pseudo, s(:id, nil, 'foo'), 'root') end example 'parse a selector using a pseudo class and an ID' do parse_css('x:root#foo').should == s( :id, - s(:pseudo, 'root', s(:test, nil, 'x')), + s(:pseudo, s(:test, nil, 'x'), 'root'), 'foo' ) end diff --git a/spec/oga/css/parser/pseudo_classes_spec.rb b/spec/oga/css/parser/pseudo_classes_spec.rb index b738993..81ab4e5 100644 --- a/spec/oga/css/parser/pseudo_classes_spec.rb +++ b/spec/oga/css/parser/pseudo_classes_spec.rb @@ -3,18 +3,18 @@ require 'spec_helper' describe Oga::CSS::Parser do context 'pseudo classes' do example 'parse the x:root pseudo class' do - parse_css('x:root').should == s(:pseudo, 'root', s(:test, nil, 'x')) + parse_css('x:root').should == s(:pseudo, s(:test, nil, 'x'), 'root') end example 'parse the :root pseudo class' do - parse_css(':root').should == s(:pseudo, 'root') + parse_css(':root').should == s(:pseudo, nil, 'root') end example 'parse the x:nth-child(1) pseudo class' do parse_css('x:nth-child(1)').should == s( :pseudo, - 'nth-child', s(:test, nil, 'x'), + 'nth-child', s(:int, 1) ) end @@ -22,8 +22,8 @@ describe Oga::CSS::Parser do example 'parse the :nth-child(1) pseudo class' do parse_css(':nth-child(1)').should == s( :pseudo, - 'nth-child', nil, + 'nth-child', s(:int, 1) ) end @@ -31,8 +31,8 @@ describe Oga::CSS::Parser do example 'parse the x:nth-child(odd) pseudo class' do parse_css('x:nth-child(odd)').should == s( :pseudo, - 'nth-child', s(:test, nil, 'x'), + 'nth-child', s(:odd) ) end @@ -40,8 +40,8 @@ describe Oga::CSS::Parser do example 'parse the x:nth-child(even) pseudo class' do parse_css('x:nth-child(even)').should == s( :pseudo, - 'nth-child', s(:test, nil, 'x'), + 'nth-child', s(:even) ) end @@ -49,8 +49,8 @@ describe Oga::CSS::Parser do example 'parse the x:nth-child(n) pseudo class' do parse_css('x:nth-child(n)').should == s( :pseudo, - 'nth-child', s(:test, nil, 'x'), + 'nth-child', s(:nth) ) end @@ -58,8 +58,8 @@ describe Oga::CSS::Parser do example 'parse the x:nth-child(-n) pseudo class' do parse_css('x:nth-child(-n)').should == s( :pseudo, - 'nth-child', s(:test, nil, 'x'), + 'nth-child', s(:nth) ) end @@ -67,8 +67,8 @@ describe Oga::CSS::Parser do example 'parse the x:nth-child(2n) pseudo class' do parse_css('x:nth-child(2n)').should == s( :pseudo, - 'nth-child', s(:test, nil, 'x'), + 'nth-child', s(:nth, s(:int, 2)) ) end @@ -76,8 +76,8 @@ describe Oga::CSS::Parser do example 'parse the x:nth-child(2n+1) pseudo class' do parse_css('x:nth-child(2n+1)').should == s( :pseudo, - 'nth-child', s(:test, nil, 'x'), + 'nth-child', s(:nth, s(:int, 2), s(:int, 1)) ) end @@ -85,8 +85,8 @@ describe Oga::CSS::Parser do example 'parse the x:nth-child(2n-1) pseudo class' do parse_css('x:nth-child(2n-1)').should == s( :pseudo, - 'nth-child', s(:test, nil, 'x'), + 'nth-child', s(:nth, s(:int, 2), s(:int, -1)) ) end @@ -94,8 +94,8 @@ describe Oga::CSS::Parser do example 'parse the x:nth-child(-2n-1) pseudo class' do parse_css('x:nth-child(-2n-1)').should == s( :pseudo, - 'nth-child', s(:test, nil, 'x'), + 'nth-child', s(:nth, s(:int, -2), s(:int, -1)) ) end @@ -103,16 +103,16 @@ describe Oga::CSS::Parser do example 'parse two pseudo selectors' do parse_css('x:focus:hover').should == s( :pseudo, - 'hover', - s(:pseudo, 'focus', s(:test, nil, 'x')) + s(:pseudo, s(:test, nil, 'x'), 'focus'), + 'hover' ) end example 'parse a pseudo class with an identifier as the argument' do parse_css('x:lang(fr)').should == s( :pseudo, - 'lang', s(:test, nil, 'x'), + 'lang', s(:test, nil, 'fr') ) end