Class: REXML::Validation::State

Inherits:
Object
  • Object
show all
Defined in:
lib/rexml/validation/relaxng.rb

Instance Method Summary (collapse)

Constructor Details

- (State) initialize(context)

A new instance of State



127
128
129
130
131
132
133
134
# File 'lib/rexml/validation/relaxng.rb', line 127

def initialize( context )
  @previous = []
  @events = []
  @current = 0
  @count = context.count += 1
  @references = context.references
  @value = false
end

Instance Method Details

- (Object) <<(event)



196
197
198
# File 'lib/rexml/validation/relaxng.rb', line 196

def <<( event )
  add_event_to_arry( @events, event )
end

- (Object) expected



192
193
194
# File 'lib/rexml/validation/relaxng.rb', line 192

def expected
  return [@events[@current]]
end

- (Object) inspect



185
186
187
188
189
190
# File 'lib/rexml/validation/relaxng.rb', line 185

def inspect
  "< #{to_s} #{@events.collect{|e|
    pre = e == @events[@current] ? '#' : ''
    pre + e.inspect unless self == e
  }.join(', ')} >"
end

- (Object) next(event)



146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
# File 'lib/rexml/validation/relaxng.rb', line 146

def next( event )
  #print "In next with #{event.inspect}.  "
  #puts "Next (#@current) is #{@events[@current]}"
  #p @previous
  return @previous.pop.next( event ) if @events[@current].nil?
  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
  #puts "Current isn't a state"
  if ( @events[@current].matches?(event) )
    @current += 1
    if @events[@current].nil?
      #puts "#{inspect[0,5]} 1RETURNING #{@previous.inspect[0,5]}"
      return @previous.pop
    elsif @events[@current].kind_of? State
      @current += 1
      #puts "#{inspect[0,5]} 2RETURNING (#{@current-1}) #{@events[@current-1].inspect[0,5]}; on return, next is #{@events[@current]}"
      @events[@current-1].previous = self
      return @events[@current-1]
    else
      #puts "#{inspect[0,5]} RETURNING self w/ next(#@current) = #{@events[@current]}"
      return self
    end
  else
    return nil
  end
end

- (Object) previous=(previous)



142
143
144
# File 'lib/rexml/validation/relaxng.rb', line 142

def previous=( previous )
  @previous << previous
end

- (Object) reset



136
137
138
139
140
# File 'lib/rexml/validation/relaxng.rb', line 136

def reset
  return if @current == 0
  @current = 0
  @events.each {|s| s.reset if s.kind_of? State }
end

- (Object) to_s



177
178
179
180
181
182
183
# File 'lib/rexml/validation/relaxng.rb', line 177

def to_s
  # Abbreviated:
  self.class.name =~ /(?:::)(\w)\w+$/
  # Full:
  #self.class.name =~ /(?:::)(\w+)$/
  "#$1.#@count"
end