Class: REXML::Validation::OneOrMore
- Inherits:
-
State
show all
- Defined in:
- lib/rexml/validation/relaxng.rb
Instance Method Summary
collapse
Methods inherited from State
#<<, #inspect, #previous=, #to_s
Constructor Details
#initialize(context) ⇒ OneOrMore
Returns a new instance of OneOrMore.
312
313
314
315
|
# File 'lib/rexml/validation/relaxng.rb', line 312
def initialize context
super
@ord = 0
end
|
Instance Method Details
348
349
350
351
352
353
354
|
# File 'lib/rexml/validation/relaxng.rb', line 348
def expected
if @current == 0 and @ord > 0
return [@previous[-1].expected, @events[0]].flatten
else
return [@events[@current]]
end
end
|
#matches?(event) ⇒ Boolean
343
344
345
346
|
# File 'lib/rexml/validation/relaxng.rb', line 343
def matches?( event )
@events[@current].matches?(event) ||
(@current == 0 and @ord > 0 and @previous[-1].matches?(event))
end
|
#next(event) ⇒ Object
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
|
# File 'lib/rexml/validation/relaxng.rb', line 322
def next( event )
expand_ref_in( @events, @current ) if @events[@current].class == Ref
if ( @events[@current].matches?(event) )
@current += 1
@ord += 1
if @events[@current].nil?
@current = 0
return self
elsif @events[@current].kind_of? State
@current += 1
@events[@current-1].previous = self
return @events[@current-1]
else
return self
end
else
return @previous.pop.next( event ) if @current == 0 and @ord > 0
return nil
end
end
|
317
318
319
320
|
# File 'lib/rexml/validation/relaxng.rb', line 317
def reset
super
@ord = 0
end
|