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.
# File psych/lib/psych/coder.rb, line 84
def [] k
@type = :map
@map[k]
end
# File psych/lib/psych/coder.rb, line 78
def []= k, v
@type = :map
@map[k] = v
end
Emit a map. The coder will be yielded to the block.
# File 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 with value
# File psych/lib/psych/coder.rb, line 73
def map= map
@type = :map
@map = map
end
Emit a sequence with map and tag
# File psych/lib/psych/coder.rb, line 54
def represent_map tag, map
@tag = tag
self.map = map
end
Emit an arbitrary object obj and tag
# File psych/lib/psych/coder.rb, line 60
def represent_object tag, obj
@tag = tag
@type = :object
@object = obj
end
Emit a scalar with value and tag
# File psych/lib/psych/coder.rb, line 42
def represent_scalar tag, value
self.tag = tag
self.scalar = value
end
Emit a sequence with list and tag
# File psych/lib/psych/coder.rb, line 48
def represent_seq tag, list
@tag = tag
self.seq = list
end
# File 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