Rename CSS "node operators" to "axes".
This commit is contained in:
parent
197cb052be
commit
50ee66419e
|
@ -14,11 +14,12 @@ rule
|
||||||
expression
|
expression
|
||||||
: path
|
: path
|
||||||
| node_test
|
| node_test
|
||||||
| node_operators
|
| axis
|
||||||
;
|
;
|
||||||
|
|
||||||
path_member
|
path_member
|
||||||
: node_test
|
: node_test
|
||||||
|
| axis
|
||||||
;
|
;
|
||||||
|
|
||||||
path_members
|
path_members
|
||||||
|
@ -51,8 +52,8 @@ rule
|
||||||
;
|
;
|
||||||
|
|
||||||
predicate_members
|
predicate_members
|
||||||
: node_test { val[0] }
|
: node_test
|
||||||
| operator { val[0] }
|
| operator
|
||||||
;
|
;
|
||||||
|
|
||||||
operator
|
operator
|
||||||
|
@ -64,12 +65,23 @@ rule
|
||||||
| op_members T_HYPHEN_IN op_members { s(:hyphen_in, val[0],val[2]) }
|
| op_members T_HYPHEN_IN op_members { s(:hyphen_in, val[0],val[2]) }
|
||||||
;
|
;
|
||||||
|
|
||||||
node_operators
|
axis
|
||||||
: node_test T_CHILD node_test { s(:child, val[0], val[2]) }
|
# x > y
|
||||||
| node_test T_FOLLOWING node_test { s(:following, val[0], val[2]) }
|
: node_test T_CHILD node_test
|
||||||
|
{
|
||||||
|
s(:axis, 'child', val[0], val[2])
|
||||||
|
}
|
||||||
|
|
||||||
|
# x + y
|
||||||
|
| node_test T_FOLLOWING node_test
|
||||||
|
{
|
||||||
|
s(:axis, 'following', val[0], val[2])
|
||||||
|
}
|
||||||
|
|
||||||
|
# x ~ y
|
||||||
| node_test T_FOLLOWING_DIRECT node_test
|
| node_test T_FOLLOWING_DIRECT node_test
|
||||||
{
|
{
|
||||||
s(:following_direct, val[0], val[2])
|
s(:axis, 'following-direct', val[0], val[2])
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,40 @@
|
||||||
|
require 'spec_helper'
|
||||||
|
|
||||||
|
describe Oga::CSS::Parser do
|
||||||
|
context 'axes' do
|
||||||
|
example 'parse the > axis' do
|
||||||
|
parse_css('x > y').should == s(
|
||||||
|
:axis,
|
||||||
|
'child',
|
||||||
|
s(:test, nil, 'x'),
|
||||||
|
s(:test, nil, 'y')
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
example 'parse the + axis' do
|
||||||
|
parse_css('x + y').should == s(
|
||||||
|
:axis,
|
||||||
|
'following-direct',
|
||||||
|
s(:test, nil, 'x'),
|
||||||
|
s(:test, nil, 'y')
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
example 'parse the ~ axis' do
|
||||||
|
parse_css('x ~ y').should == s(
|
||||||
|
:axis,
|
||||||
|
'following',
|
||||||
|
s(:test, nil, 'x'),
|
||||||
|
s(:test, nil, 'y')
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
example 'parse the ~ axis followed by another node test' do
|
||||||
|
parse_css('x ~ y z').should == s(
|
||||||
|
:path,
|
||||||
|
s(:axis, 'following', s(:test, nil, 'x'), s(:test, nil, 'y')),
|
||||||
|
s(:test, nil, 'z')
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -55,29 +55,5 @@ describe Oga::CSS::Parser do
|
||||||
s(:hyphen_in, s(:test, nil, 'a'), s(:string, 'b'))
|
s(:hyphen_in, s(:test, nil, 'a'), s(:string, 'b'))
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
example 'parse the > operator' do
|
|
||||||
parse_css('x > y').should == s(
|
|
||||||
:child,
|
|
||||||
s(:test, nil, 'x'),
|
|
||||||
s(:test, nil, 'y')
|
|
||||||
)
|
|
||||||
end
|
|
||||||
|
|
||||||
example 'parse the + operator' do
|
|
||||||
parse_css('x + y').should == s(
|
|
||||||
:following_direct,
|
|
||||||
s(:test, nil, 'x'),
|
|
||||||
s(:test, nil, 'y')
|
|
||||||
)
|
|
||||||
end
|
|
||||||
|
|
||||||
example 'parse the ~ operator' do
|
|
||||||
parse_css('x ~ y').should == s(
|
|
||||||
:following,
|
|
||||||
s(:test, nil, 'x'),
|
|
||||||
s(:test, nil, 'y')
|
|
||||||
)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue