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 83
def [] k
@type = :map
@map[k]
end
# File psych/lib/psych/coder.rb, line 77
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 33
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 72
def map= map
@type = :map
@map = map
end
Emit a sequence with map and tag
# File psych/lib/psych/coder.rb, line 53
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 59
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 41
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 47
def represent_seq tag, list
@tag = tag
self.seq = list
end
# File psych/lib/psych/coder.rb, line 23
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
Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.
If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.
If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.
If you want to help improve the Ruby documentation, please see Improve the docs, or visit Documenting-ruby.org.