# class Psych::Coder

If an object defines `encode_with`, then an instance of `Psych::Coder` will be passed to the method when the object is being serialized. The `Coder` automatically assumes a `Psych::Nodes::Mapping` is being emitted. Other objects like Sequence and Scalar may be emitted if `seq=` or `scalar=` are called, respectively.

### Attributes

implicit [RW]
object [RW]
seq [R]
style [RW]
tag [RW]
type [R]

### Public Class Methods

new (tag)
Source

    # File ext/psych/lib/psych/coder.rb, line 13
    def initialize tag
      @map      = {}
      @seq      = []
      @implicit = false
      @type     = :map
      @tag      = tag
      @style    = Psych::Nodes::Mapping::BLOCK
      @scalar   = nil
      @object   = nil
    end

### Public Instance Methods

[] (k)
Source

    # File ext/psych/lib/psych/coder.rb, line 84
    def [] k
      @type = :map
      @map[k]
    end

[]= (k, v)
Source

    # File ext/psych/lib/psych/coder.rb, line 78
    def []= k, v
      @type = :map
      @map[k] = v
    end

Also aliased as: add
add (k, v)
Alias for: []=
map (tag = @tag, style = @style) { |self| ... }
Source

    # File ext/psych/lib/psych/coder.rb, line 34
    def map tag = @tag, style = @style
      @tag   = tag
      @style = style
      yield self if block_given?
      @map
    end

Emit a map. The coder will be yielded to the block.

map= (map)
Source

    # File ext/psych/lib/psych/coder.rb, line 73
    def map= map
      @type = :map
      @map  = map
    end

Emit a map with `value`

represent_map (tag, map)
Source

    # File ext/psych/lib/psych/coder.rb, line 54
    def represent_map tag, map
      @tag = tag
      self.map = map
    end

Emit a sequence with `map` and `tag`

represent_object (tag, obj)
Source

    # File ext/psych/lib/psych/coder.rb, line 60
    def represent_object tag, obj
      @tag    = tag
      @type   = :object
      @object = obj
    end

Emit an arbitrary object `obj` and `tag`

represent_scalar (tag, value)
Source

    # File ext/psych/lib/psych/coder.rb, line 42
    def represent_scalar tag, value
      self.tag    = tag
      self.scalar = value
    end

Emit a scalar with `value` and `tag`

represent_seq (tag, list)
Source

    # File ext/psych/lib/psych/coder.rb, line 48
    def represent_seq tag, list
      @tag = tag
      self.seq = list
    end

Emit a sequence with `list` and `tag`

scalar (*args)
Source

    # File ext/psych/lib/psych/coder.rb, line 24
    def scalar *args
      if args.length > 0
        warn "#{caller[0]}: Coder#scalar(a,b,c) is deprecated" if $VERBOSE
        @tag, @scalar, _ = args
        @type = :scalar
      end
      @scalar
    end

scalar= (value)
Source

    # File ext/psych/lib/psych/coder.rb, line 67
    def scalar= value
      @type   = :scalar
      @scalar = value
    end

Emit a scalar with `value`

seq= (list)
Source

    # File ext/psych/lib/psych/coder.rb, line 90
    def seq= list
      @type = :seq
      @seq  = list
    end

Emit a sequence of `list`