Class REXML::Validation::Choice
In: rexml/validation/relaxng.rb
Parent: State

Methods

<<   add_event_to_arry   expected   inspect   matches?   new   next   reset  

Public Class methods

[Source]

# File rexml/validation/relaxng.rb, line 363
      def initialize context
        super
        @choices = []
      end

Public Instance methods

[Source]

# File rexml/validation/relaxng.rb, line 374
      def <<( event )
        add_event_to_arry( @choices, event )
      end

[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

[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

[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

[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

[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

[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

[Validate]

ruby-doc.org is a service of James Britt and Happy Camper Studios, a Ruby application development company in Phoenix, AZ.

Documentation content on ruby-doc.org is provided by remarkable members of the Ruby community.

For more information on the Ruby programming language, visit ruby-lang.org.

Want to help improve Ruby's API docs? See Ruby Documentation Guidelines.