Lex XPath axes without a node test.
This commit is contained in:
		
							parent
							
								
									488000438b
								
							
						
					
					
						commit
						f699b0d097
					
				|  | @ -212,11 +212,7 @@ module Oga | |||
|           | 'parent' | ||||
|           | 'preceding' | ||||
|           | 'preceding-sibling' | ||||
|           | 'self') '::'; | ||||
| 
 | ||||
|         action emit_axis_full { | ||||
|           emit(:T_AXIS, ts, te - 2) | ||||
|         } | ||||
|           | 'self'); | ||||
| 
 | ||||
|         # Short Axes | ||||
|         # | ||||
|  | @ -288,7 +284,10 @@ module Oga | |||
|           string  => emit_string; | ||||
|           integer => emit_integer; | ||||
|           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; | ||||
|           identifier => emit_identifier; | ||||
|         *|; | ||||
|  |  | |||
|  | @ -44,6 +44,21 @@ describe Oga::XPath::Parser do | |||
|       ) | ||||
|     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 | ||||
|       parse_xpath('/following::A').should == s( | ||||
|         :absolute_path, | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue