Class: SafeYAML::PsychHandler

### Home Classes Methods

### In Files

- lib/safe_yaml/psych_handler.rb

### Parent

Psych::Handler

### Methods

- ::new
- #add_to_current_structure
- #alias
- #end_current_structure
- #end_document
- #end_mapping
- #end_sequence
- #result
- #scalar
- #start_mapping
- #start_sequence
- #streaming?

### Class/Module Index

Quicksearch

- SafeYAML
- SafeYAML::Deep
- SafeYAML::LibyamlChecker
- SafeYAML::Parse
- SafeYAML::Parse::Date
- SafeYAML::Parse::Hexadecimal
- SafeYAML::Parse::Sexagesimal
- SafeYAML::PsychHandler
- SafeYAML::PsychResolver
- SafeYAML::Resolver
- SafeYAML::SafeToRubyVisitor
- SafeYAML::SyckResolver
- SafeYAML::Transform
- SafeYAML::Transform::ToBoolean
- SafeYAML::Transform::ToDate
- SafeYAML::Transform::ToFloat
- SafeYAML::Transform::ToInteger
- SafeYAML::Transform::ToNil
- SafeYAML::Transform::ToSymbol
- SafeYAML::Transform::TransformationMap
- SafeYAML::Transform::TransformationMap::CaseAgnosticMap
- SafeYAML::Transform::TransformationMap::ClassMethods
- Object
- YAML

No matching classes.

# SafeYAML::PsychHandler

### Public Class Methods

new(options, &block) click to toggle source

    # File lib/safe_yaml/psych_handler.rb, line 6
    def initialize(options, &block)
      @options      = SafeYAML::OPTIONS.merge(options || {})
      @block        = block
      @initializers = @options[:custom_initializers] || {}
      @anchors      = {}
      @stack        = []
      @current_key  = nil
      @result       = nil
      @begun        = false
    end

### Public Instance Methods

add_to_current_structure(value, anchor=nil, quoted=nil, tag=nil) click to toggle source

    # File lib/safe_yaml/psych_handler.rb, line 21
    def add_to_current_structure(value, anchor=nil, quoted=nil, tag=nil)
      value = Transform.to_proper_type(value, quoted, tag, @options)

      @anchors[anchor] = value if anchor

      if !@begun
        @begun = true
        @result = value
        @current_structure = @result
        return
      end

      if @current_structure.respond_to?(:<<)
        @current_structure << value

      elsif @current_structure.respond_to?(:[]=)
        if @current_key.nil?
          @current_key = value

        else
          if @current_key == "<<"
            @current_structure.merge!(value)
          else
            @current_structure[@current_key] = value
          end

          @current_key = nil
        end

      else
        raise "Don't know how to add to a #{@current_structure.class}!"
      end
    end

alias(anchor) click to toggle source

event handlers

    # File lib/safe_yaml/psych_handler.rb, line 65
    def alias(anchor)
      add_to_current_structure(@anchors[anchor])
    end

end_current_structure() click to toggle source

    # File lib/safe_yaml/psych_handler.rb, line 55
    def end_current_structure
      @stack.pop
      @current_structure = @stack.last
    end

end_document(implicit) click to toggle source

    # File lib/safe_yaml/psych_handler.rb, line 73
    def end_document(implicit)
      @block.call(@result)
    end

end_mapping() click to toggle source

    # File lib/safe_yaml/psych_handler.rb, line 84
    def end_mapping
      self.end_current_structure()
    end

end_sequence() click to toggle source

    # File lib/safe_yaml/psych_handler.rb, line 95
    def end_sequence
      self.end_current_structure()
    end

result() click to toggle source

    # File lib/safe_yaml/psych_handler.rb, line 17
    def result
      @begun ? @result : false
    end

scalar(value, anchor, tag, plain, quoted, style) click to toggle source

    # File lib/safe_yaml/psych_handler.rb, line 69
    def scalar(value, anchor, tag, plain, quoted, style)
      add_to_current_structure(value, anchor, quoted, tag)
    end

start_mapping(anchor, tag, implicit, style) click to toggle source

    # File lib/safe_yaml/psych_handler.rb, line 77
    def start_mapping(anchor, tag, implicit, style)
      map = @initializers.include?(tag) ? @initializers[tag].call : {}
      self.add_to_current_structure(map, anchor)
      @current_structure = map
      @stack.push(map)
    end

start_sequence(anchor, tag, implicit, style) click to toggle source

    # File lib/safe_yaml/psych_handler.rb, line 88
    def start_sequence(anchor, tag, implicit, style)
      seq = @initializers.include?(tag) ? @initializers[tag].call : []
      self.add_to_current_structure(seq, anchor)
      @current_structure = seq
      @stack.push(seq)
    end

streaming?() click to toggle source

    # File lib/safe_yaml/psych_handler.rb, line 60
    def streaming?
      true
    end

[Validate]

Generated with the Darkfish Rdoc Generator 2.