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

Methods

expected   matches?   new   next   reset  

Public Class methods

[Source]

# File rexml/validation/relaxng.rb, line 316
      def initialize context
        super
        @ord = 0
      end

Public Instance methods

[Source]

# File rexml/validation/relaxng.rb, line 352
      def expected
        if @current == 0 and @ord > 0
          return [@previous[-1].expected, @events[0]].flatten
        else
          return [@events[@current]]
        end
      end

[Source]

# File rexml/validation/relaxng.rb, line 347
      def matches?( event )
        @events[@current].matches?(event) || 
        (@current == 0 and @ord > 0 and @previous[-1].matches?(event))
      end

[Source]

# File rexml/validation/relaxng.rb, line 326
      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

[Source]

# File rexml/validation/relaxng.rb, line 321
      def reset
        super 
        @ord = 0
      end

[Validate]