In Files

  • rexml/validation/relaxng.rb

Class/Module Index [+]

Quicksearch

REXML::Validation::Choice

Public Class Methods

new(context) click to toggle source
 
               # File rexml/validation/relaxng.rb, line 358
def initialize context
  super
  @choices = []
end
            

Public Instance Methods

<<( event ) click to toggle source
 
               # File rexml/validation/relaxng.rb, line 369
def <<( event )
  add_event_to_arry( @choices, event )
end
            
expected() click to toggle source
 
               # File rexml/validation/relaxng.rb, line 403
def expected
  return [@events[@current]] if @events.size > 0
  return @choices.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 414
def inspect
  "< #{to_s} #{@choices.collect{|e| e.collect{|f|f.to_s}.join(', ')}.join(' or ')} >"
end
            
matches?( event ) click to toggle source
 
               # File rexml/validation/relaxng.rb, line 398
def matches?( event )
  return @events[@current].matches?( event ) if @events.size > 0
  !@choices.find{|evt| evt[0].matches?(event)}.nil?
end
            
next( event ) click to toggle source
 
               # File rexml/validation/relaxng.rb, line 373
def next( event )
  # Make the choice if we haven't
  if @events.size == 0
    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.find { |evt| evt[0].matches? event }
    # Remove the references
    # Find the events
  end
  unless @events
    @events = []
    return nil
  end
  super
end
            
reset() click to toggle source
 
               # File rexml/validation/relaxng.rb, line 363
def reset
  super
  @events = []
  @choices.each { |c| c.each { |s| s.reset if s.kind_of? State } }
end
            

Protected Instance Methods

add_event_to_arry( arry, evt ) click to toggle source
 
               # File rexml/validation/relaxng.rb, line 419
def add_event_to_arry( arry, evt )
  if evt.kind_of? State or evt.class == Ref
    arry << [evt]
  elsif evt[0] == :text
   if arry[-1] and
      arry[-1][-1].kind_of?( Event ) and
      arry[-1][-1].event_type == :text and @value

      arry[-1][-1].event_arg = evt[1]
      @value = false
   end
  else
    arry << [] if evt[0] == :start_element
    arry[-1] << generate_event( evt )
  end
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.