Remove :axis CSS node types.

The various axes are now simply their own node types.
This commit is contained in:
Yorick Peterse 2014-10-12 18:08:35 +02:00
parent ed0cd7826e
commit d9a4221a0a
2 changed files with 17 additions and 33 deletions

View File

@ -103,21 +103,15 @@ rule
axis axis
# x > y # x > y
: path_member T_CHILD path_member : path_member T_CHILD path_member { s(:child, val[0], val[2]) }
{
s(:axis, 'child', val[0], val[2])
}
# x + y # x + y
| path_member T_FOLLOWING path_member | path_member T_FOLLOWING path_member { s(:following, val[0], val[2]) }
{
s(:axis, 'following', val[0], val[2])
}
# x ~ y # x ~ y
| path_member T_FOLLOWING_DIRECT path_member | path_member T_FOLLOWING_DIRECT path_member
{ {
s(:axis, 'following-direct', val[0], val[2]) s(:following_direct, val[0], val[2])
} }
; ;

View File

@ -4,8 +4,7 @@ describe Oga::CSS::Parser do
context 'axes' do context 'axes' do
example 'parse the > axis' do example 'parse the > axis' do
parse_css('x > y').should == s( parse_css('x > y').should == s(
:axis, :child,
'child',
s(:test, nil, 'x'), s(:test, nil, 'x'),
s(:test, nil, 'y') s(:test, nil, 'y')
) )
@ -13,17 +12,15 @@ describe Oga::CSS::Parser do
example 'parse the > axis called on another > axis' do example 'parse the > axis called on another > axis' do
parse_css('a > b > c').should == s( parse_css('a > b > c').should == s(
:axis, :child,
'child', s(:child, s(:test, nil, 'a'), s(:test, nil, 'b')),
s(:axis, 'child', s(:test, nil, 'a'), s(:test, nil, 'b')),
s(:test, nil, 'c') s(:test, nil, 'c')
) )
end end
example 'parse an > axis followed by an element with an ID' do example 'parse an > axis followed by an element with an ID' do
parse_css('x > foo#bar').should == s( parse_css('x > foo#bar').should == s(
:axis, :child,
'child',
s(:test, nil, 'x'), s(:test, nil, 'x'),
s(:id, 'bar', s(:test, nil, 'foo')) s(:id, 'bar', s(:test, nil, 'foo'))
) )
@ -31,8 +28,7 @@ describe Oga::CSS::Parser do
example 'parse an > axis followed by an element with a class' do example 'parse an > axis followed by an element with a class' do
parse_css('x > foo.bar').should == s( parse_css('x > foo.bar').should == s(
:axis, :child,
'child',
s(:test, nil, 'x'), s(:test, nil, 'x'),
s(:class, 'bar', s(:test, nil, 'foo')) s(:class, 'bar', s(:test, nil, 'foo'))
) )
@ -40,8 +36,7 @@ describe Oga::CSS::Parser do
example 'parse the + axis' do example 'parse the + axis' do
parse_css('x + y').should == s( parse_css('x + y').should == s(
:axis, :following_direct,
'following-direct',
s(:test, nil, 'x'), s(:test, nil, 'x'),
s(:test, nil, 'y') s(:test, nil, 'y')
) )
@ -49,17 +44,15 @@ describe Oga::CSS::Parser do
example 'parse the + axis called on another + axis' do example 'parse the + axis called on another + axis' do
parse_css('a + b + c').should == s( parse_css('a + b + c').should == s(
:axis, :following_direct,
'following-direct', s(:following_direct, s(:test, nil, 'a'), s(:test, nil, 'b')),
s(:axis, 'following-direct', s(:test, nil, 'a'), s(:test, nil, 'b')),
s(:test, nil, 'c') s(:test, nil, 'c')
) )
end end
example 'parse the ~ axis' do example 'parse the ~ axis' do
parse_css('x ~ y').should == s( parse_css('x ~ y').should == s(
:axis, :following,
'following',
s(:test, nil, 'x'), s(:test, nil, 'x'),
s(:test, nil, 'y') s(:test, nil, 'y')
) )
@ -68,24 +61,22 @@ describe Oga::CSS::Parser do
example 'parse the ~ axis followed by another node test' do example 'parse the ~ axis followed by another node test' do
parse_css('x ~ y z').should == s( parse_css('x ~ y z').should == s(
:path, :path,
s(:axis, 'following', s(:test, nil, 'x'), s(:test, nil, 'y')), s(:following, s(:test, nil, 'x'), s(:test, nil, 'y')),
s(:test, nil, 'z') s(:test, nil, 'z')
) )
end end
example 'parse the ~ axis called on another ~ axis' do example 'parse the ~ axis called on another ~ axis' do
parse_css('a ~ b ~ c').should == s( parse_css('a ~ b ~ c').should == s(
:axis, :following,
'following', s(:following, s(:test, nil, 'a'), s(:test, nil, 'b')),
s(:axis, 'following', s(:test, nil, 'a'), s(:test, nil, 'b')),
s(:test, nil, 'c') s(:test, nil, 'c')
) )
end end
example 'parse a pseudo class followed by the ~ axis' do example 'parse a pseudo class followed by the ~ axis' do
parse_css('x:root ~ a').should == s( parse_css('x:root ~ a').should == s(
:axis, :following,
'following',
s(:pseudo, 'root', s(:test, nil, 'x')), s(:pseudo, 'root', s(:test, nil, 'x')),
s(:test, nil, 'a') s(:test, nil, 'a')
) )
@ -93,8 +84,7 @@ describe Oga::CSS::Parser do
example 'parse the ~ axis followed by a pseudo class' do example 'parse the ~ axis followed by a pseudo class' do
parse_css('a ~ x:root').should == s( parse_css('a ~ x:root').should == s(
:axis, :following,
'following',
s(:test, nil, 'a'), s(:test, nil, 'a'),
s(:pseudo, 'root', s(:test, nil, 'x')) s(:pseudo, 'root', s(:test, nil, 'x'))
) )