Method: Psych::Visitors::YAMLTree#initialize

Defined in:
lib/psych/visitors/yaml_tree.rb

#initialize(emitter, ss, options) ⇒ YAMLTree

Returns a new instance of YAMLTree.



56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# File 'lib/psych/visitors/yaml_tree.rb', line 56

def initialize emitter, ss, options
  super()
  @started    = false
  @finished   = false
  @emitter    = emitter
  @st         = Registrar.new
  @ss         = ss
  @options    = options
  @line_width = options[:line_width]
  if @line_width && @line_width < 0
    if @line_width == -1
      # Treat -1 as unlimited line-width, same as libyaml does.
      @line_width = nil
    else
      fail(ArgumentError, "Invalid line_width #{@line_width}, must be non-negative or -1 for unlimited.")
    end
  end
  @coders     = []

  @dispatch_cache = Hash.new do |h,klass|
    method = "visit_#{(klass.name || '').split('::').join('_')}"

    method = respond_to?(method) ? method : h[klass.superclass]

    raise(TypeError, "Can't dump #{target.class}") unless method

    h[klass] = method
  end.compare_by_identity
end