Module: REXML::Validation::Validator (Ruby 2.2.3)
Description: Module : REXML::Validation::Validator - Ruby 2.2.3

- Home
- Core 2.2.3
- Std-lib 2.2.3
- Downloads

Support for the Ruby 2.2 series has ended. See here for reference.

### Home Classes Methods

### In Files

- rexml/validation/validation.rb

### Methods

- #dump
- #reset
- #validate

### Class/Module Index

Quicksearch

- Array
- Fixnum
- Float
- Object
- REXML
- REXML::AttlistDecl
- REXML::Attribute
- REXML::Attributes
- REXML::CData
- REXML::Child
- REXML::Comment
- REXML::DTD
- REXML::DTD::AttlistDecl
- REXML::DTD::ElementDecl
- REXML::DTD::EntityDecl
- REXML::DTD::NotationDecl
- REXML::DTD::Parser
- REXML::Declaration
- REXML::DocType
- REXML::Document
- REXML::Element
- REXML::ElementDecl
- REXML::Elements
- REXML::Encoding
- REXML::Entity
- REXML::EntityConst
- REXML::ExternalEntity
- REXML::Formatters
- REXML::Formatters::Default
- REXML::Formatters::Pretty
- REXML::Formatters::Transitive
- REXML::Functions
- REXML::IOSource
- REXML::Instruction
- REXML::Light
- REXML::Light::Node
- REXML::Namespace
- REXML::Node
- REXML::NotationDecl
- REXML::Output
- REXML::Parent
- REXML::ParseException
- REXML::Parsers
- REXML::Parsers::BaseParser
- REXML::Parsers::LightParser
- REXML::Parsers::PullEvent
- REXML::Parsers::PullParser
- REXML::Parsers::SAX2Parser
- REXML::Parsers::StreamParser
- REXML::Parsers::TreeParser
- REXML::Parsers::UltraLightParser
- REXML::Parsers::XPathParser
- REXML::QuickPath
- REXML::SAX2Listener
- REXML::Security
- REXML::Source
- REXML::SourceFactory
- REXML::StreamListener
- REXML::SyncEnumerator
- REXML::Text
- REXML::UndefinedNamespaceException
- REXML::Validation
- REXML::Validation::Choice
- REXML::Validation::Event
- REXML::Validation::Interleave
- REXML::Validation::OneOrMore
- REXML::Validation::Optional
- REXML::Validation::Ref
- REXML::Validation::RelaxNG
- REXML::Validation::Sequence
- REXML::Validation::State
- REXML::Validation::ValidationException
- REXML::Validation::Validator
- REXML::Validation::ZeroOrMore
- REXML::XMLDecl
- REXML::XMLTokens
- REXML::XPath
- REXML::XPathParser
- Symbol

No matching classes.

# REXML::Validation::Validator

### Constants

NILEVENT

### Public Instance Methods

dump() click to toggle source

                   # File rexml/validation/validation.rb, line 14
    def dump
      puts @root.inspect
    end

reset() click to toggle source

                   # File rexml/validation/validation.rb, line 7
    def reset
      @current = @root
      @root.reset
      @root.previous = true
      @attr_stack = []
      self
    end

validate( event ) click to toggle source

                   # File rexml/validation/validation.rb, line 17
    def validate( event )
      @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
        @attr_stack << event[2]
        begin
          sattr = [:start_attribute, nil]
          eattr = [:end_attribute]
          text = [:text, nil]
          k, = event[2].find { |key,value|
            sattr[1] = key
            m = @current.next( sattr )
            if m
              # If the state has text children...
              if m.matches?( eattr )
                @current = m
              else
                text[1] = value
                m = m.next( text )
                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