In Files

  • rexml/validation/relaxng.rb

REXML::Validation::Choice

Public Class Methods

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

Public Instance Methods

<<( event ) click to toggle source
 
               # File rexml/validation/relaxng.rb, line 374
def <<( event )
  add_event_to_arry( @choices, event )
end
            
expected() click to toggle source
 
               # File rexml/validation/relaxng.rb, line 411
def expected
  #puts "IN CHOICE EXPECTED"
  #puts "EVENTS = #{@events.inspect}"
  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 424
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 406
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 378
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
  #puts "In next with #{event.inspect}."
  #puts "events is #{@events.inspect}"
  unless @events
    @events = []
    return nil
  end
  #puts "current = #@current"
  super
end
            
reset() click to toggle source
 
               # File rexml/validation/relaxng.rb, line 368
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 429
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.

blog comments powered by Disqus