Lex XPath axes without a node test.
This commit is contained in:
parent
488000438b
commit
f699b0d097
|
@ -212,11 +212,7 @@ module Oga
|
||||||
| 'parent'
|
| 'parent'
|
||||||
| 'preceding'
|
| 'preceding'
|
||||||
| 'preceding-sibling'
|
| 'preceding-sibling'
|
||||||
| 'self') '::';
|
| 'self');
|
||||||
|
|
||||||
action emit_axis_full {
|
|
||||||
emit(:T_AXIS, ts, te - 2)
|
|
||||||
}
|
|
||||||
|
|
||||||
# Short Axes
|
# Short Axes
|
||||||
#
|
#
|
||||||
|
@ -288,7 +284,10 @@ module Oga
|
||||||
string => emit_string;
|
string => emit_string;
|
||||||
integer => emit_integer;
|
integer => emit_integer;
|
||||||
float => emit_float;
|
float => emit_float;
|
||||||
axis_full => emit_axis_full;
|
|
||||||
|
axis_full => { emit(:T_AXIS, ts, te) };
|
||||||
|
axis_full '::' => { emit(:T_AXIS, ts, te - 2) };
|
||||||
|
|
||||||
axis_short => emit_axis_short;
|
axis_short => emit_axis_short;
|
||||||
identifier => emit_identifier;
|
identifier => emit_identifier;
|
||||||
*|;
|
*|;
|
||||||
|
|
|
@ -44,6 +44,21 @@ describe Oga::XPath::Parser do
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
example 'parse the descendant-or-self axis without a test' do
|
||||||
|
parse_xpath('/descendant-or-self').should == s(
|
||||||
|
:absolute_path,
|
||||||
|
s(:axis, 'descendant-or-self')
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
example 'parse the descendant-or-self axis followed by an attribute axis' do
|
||||||
|
parse_xpath('/descendant-or-self/attribute::foo').should == s(
|
||||||
|
:absolute_path,
|
||||||
|
s(:axis, 'descendant-or-self'),
|
||||||
|
s(:axis, 'attribute', s(:test, nil, 'foo'))
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
example 'parse the following axis' do
|
example 'parse the following axis' do
|
||||||
parse_xpath('/following::A').should == s(
|
parse_xpath('/following::A').should == s(
|
||||||
:absolute_path,
|
:absolute_path,
|
||||||
|
|
Loading…
Reference in New Issue