| Module | REXML::Validation::Validator |
| In: |
rexml/validation/validation.rb
|
| NILEVENT | = | [ nil ] |
# File rexml/validation/validation.rb, line 7 def reset @current = @root @root.reset @root.previous = true @attr_stack = [] self end
# File rexml/validation/validation.rb, line 17 def validate( event ) #puts "Current: #@current" #puts "Event: #{event.inspect}" @attr_stack = [] unless defined? @attr_stack match = @current.next(event) raise ValidationException.new( "Validation error. Expected: "+ @current.expected.join( " or " )+" from #{@current.inspect} "+ " but got #{Event.new( event[0], event[1] ).inspect}" ) unless match @current = match # Check for attributes case event[0] when :start_element #puts "Checking attributes" @attr_stack << event[2] begin sattr = [:start_attribute, nil] eattr = [:end_attribute] text = [:text, nil] k,v = event[2].find { |k,v| sattr[1] = k #puts "Looking for #{sattr.inspect}" m = @current.next( sattr ) #puts "Got #{m.inspect}" if m # If the state has text children... #puts "Looking for #{eattr.inspect}" #puts "Expect #{m.expected}" if m.matches?( eattr ) #puts "Got end" @current = m else #puts "Didn't get end" text[1] = v #puts "Looking for #{text.inspect}" m = m.next( text ) #puts "Got #{m.inspect}" text[1] = nil return false unless m @current = m if m end m = @current.next( eattr ) if m @current = m true else false end else false end } event[2].delete(k) if k end while k when :end_element attrs = @attr_stack.pop raise ValidationException.new( "Validation error. Illegal "+ " attributes: #{attrs.inspect}") if attrs.length > 0 end end
ruby-doc.org is a community service provided by James Britt and Happy Camper Studios, a Phoenix, Arizona, Ruby application development company.
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.