| Class | REXML::Validation::OneOrMore |
| In: |
lib/rexml/validation/relaxng.rb
|
| Parent: | State |
# File lib/rexml/validation/relaxng.rb, line 316
316: def initialize context
317: super
318: @ord = 0
319: end
# File lib/rexml/validation/relaxng.rb, line 352
352: def expected
353: if @current == 0 and @ord > 0
354: return [@previous[-1].expected, @events[0]].flatten
355: else
356: return [@events[@current]]
357: end
358: end
# File lib/rexml/validation/relaxng.rb, line 347
347: def matches?( event )
348: @events[@current].matches?(event) ||
349: (@current == 0 and @ord > 0 and @previous[-1].matches?(event))
350: end
# File lib/rexml/validation/relaxng.rb, line 326
326: def next( event )
327: expand_ref_in( @events, @current ) if @events[@current].class == Ref
328: if ( @events[@current].matches?(event) )
329: @current += 1
330: @ord += 1
331: if @events[@current].nil?
332: @current = 0
333: return self
334: elsif @events[@current].kind_of? State
335: @current += 1
336: @events[@current-1].previous = self
337: return @events[@current-1]
338: else
339: return self
340: end
341: else
342: return @previous.pop.next( event ) if @current == 0 and @ord > 0
343: return nil
344: end
345: end