In Files

  • rexml/validation/relaxng.rb

Class/Module Index [+]

Quicksearch

REXML::Validation::Interleave

Public Class Methods

new(context) click to toggle source
 
               # File rexml/validation/relaxng.rb, line 439
def initialize context
  super
  @choice = 0
end
            

Public Instance Methods

expected() click to toggle source
 
               # File rexml/validation/relaxng.rb, line 510
def expected
  return [@events[@current]] if @events[@current]
  return @choices[@choice..-1].collect do |x|
    if x[0].kind_of? State
      x[0].expected
    else
      x[0]
    end
  end.flatten
end
            
inspect() click to toggle source
 
               # File rexml/validation/relaxng.rb, line 521
def inspect
  "< #{to_s} #{@choices.collect{|e| e.collect{|f|f.to_s}.join(', ')}.join(' and ')} >"
end
            
matches?( event ) click to toggle source
 
               # File rexml/validation/relaxng.rb, line 505
def matches?( event )
  return @events[@current].matches?( event ) if @events[@current]
  !@choices[@choice..-1].find{|evt| evt[0].matches?(event)}.nil?
end
            
next( event ) click to toggle source
 
               # File rexml/validation/relaxng.rb, line 476
def next( event )
  # Find the next series
  next_current(event) unless @events[@current]
  return nil unless @events[@current]

  expand_ref_in( @events, @current ) if @events[@current].class == Ref
  if ( @events[@current].kind_of? State )
    @current += 1
    @events[@current-1].previous = self
    return @events[@current-1].next( event )
  end
  return @previous.pop.next( event ) if @events[@current].nil?
  if ( @events[@current].matches?(event) )
    @current += 1
    if @events[@current].nil?
      return self unless @choices[@choice].nil?
      return @previous.pop
    elsif @events[@current].kind_of? State
      @current += 1
      @events[@current-1].previous = self
      return @events[@current-1]
    else
      return self
    end
  else
    return nil
  end
end
            
next_current( event ) click to toggle source
 
               # File rexml/validation/relaxng.rb, line 448
def next_current( event )
  # Expand references
  c = 0 ; max = @choices.size
  while c < max
    if @choices[c][0].class == Ref
      expand_ref_in( @choices[c], 0 )
      @choices += @choices[c]
      @choices.delete( @choices[c] )
      max -= 1
    else
      c += 1
    end
  end
  @events = @choices[@choice..-1].find { |evt| evt[0].matches? event }
  @current = 0
  if @events
    # reorder the choices
    old = @choices[@choice]
    idx = @choices.index( @events )
    @choices[@choice] = @events
    @choices[idx] = old
    @choice += 1
  end

  @events = [] unless @events
end
            
reset() click to toggle source
 
               # File rexml/validation/relaxng.rb, line 444
def reset
  @choice = 0
end
            

Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.

If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.

If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.

If you want to help improve the Ruby documentation, please visit Documenting-ruby.org.