Parsing of pseudo classes without node tests.

This commit is contained in:
Yorick Peterse 2014-10-07 23:01:58 +02:00
parent a6b0bd96c8
commit 91f9cc984b
2 changed files with 31 additions and 7 deletions

View File

@ -122,14 +122,25 @@ rule
;
pseudo_class
# :root
: pseudo_name { s(:pseudo, val[0]) }
# x:root
: path_member T_COLON T_IDENT { s(:pseudo, val[2], val[0]) }
| path_member pseudo_name { s(:pseudo, val[1], val[0]) }
# :nth-child(2)
| pseudo_name pseudo_args { s(:pseudo, val[0], nil, val[1]) }
# x:nth-child(2)
| path_member T_COLON T_IDENT T_LPAREN pseudo_arg T_RPAREN
{
s(:pseudo, val[2], val[0], val[4])
}
| path_member pseudo_name pseudo_args { s(:pseudo, val[1], val[0], val[2]) }
;
pseudo_name
: T_COLON T_IDENT { val[1] }
;
pseudo_args
: T_LPAREN pseudo_arg T_RPAREN { val[1] }
;
pseudo_arg

View File

@ -2,11 +2,15 @@ require 'spec_helper'
describe Oga::CSS::Parser do
context 'pseudo classes' do
example 'parse the :root pseudo class' do
example 'parse the x:root pseudo class' do
parse_css('x:root').should == s(:pseudo, 'root', s(:test, nil, 'x'))
end
example 'parse the x:nth-child pseudo class' do
example 'parse the :root pseudo class' do
parse_css(':root').should == s(:pseudo, 'root')
end
example 'parse the x:nth-child(1) pseudo class' do
parse_css('x:nth-child(1)').should == s(
:pseudo,
'nth-child',
@ -15,6 +19,15 @@ describe Oga::CSS::Parser do
)
end
example 'parse the :nth-child(1) pseudo class' do
parse_css(':nth-child(1)').should == s(
:pseudo,
'nth-child',
nil,
s(:int, 1)
)
end
example 'parse the x:nth-child(odd) pseudo class' do
parse_css('x:nth-child(odd)').should == s(
:pseudo,