类 Psych::Coder
如果一个对象定义了 encode_with
,那么当该对象被序列化时,一个 Psych::Coder
实例将被传递给该方法。 Coder
自动假设正在发出一个 Psych::Nodes::Mapping
。如果分别调用了 seq=
或 scalar=
,则可以发出其他对象,如 Sequence 和 Scalar。
属性
implicit[RW]
object[RW]
seq[R]
style[RW]
tag[RW]
type[R]
公共类方法
new(tag) 点击切换源代码
# File 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
公共实例方法
[](k) 点击切换源代码
# File psych/lib/psych/coder.rb, line 84 def [] k @type = :map @map[k] end
[]=(k, v) 点击切换源代码
# File psych/lib/psych/coder.rb, line 78 def []= k, v @type = :map @map[k] = v end
别名:add
map(tag = @tag, style = @style) { |self| ... } 点击切换源代码
发出一个映射。编码器将被传递给块。
# 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
map=(map) 点击切换源代码
使用 value
发出一个映射
# File psych/lib/psych/coder.rb, line 73 def map= map @type = :map @map = map end
represent_map(tag, map) 点击切换源代码
使用 map
和 tag
发出一个序列
# File psych/lib/psych/coder.rb, line 54 def represent_map tag, map @tag = tag self.map = map end
represent_object(tag, obj) 点击切换源代码
发出一个任意对象 obj
和 tag
# File psych/lib/psych/coder.rb, line 60 def represent_object tag, obj @tag = tag @type = :object @object = obj end
represent_scalar(tag, value) 点击切换源代码
使用 value
和 tag
发出一个标量
# File psych/lib/psych/coder.rb, line 42 def represent_scalar tag, value self.tag = tag self.scalar = value end
represent_seq(tag, list) 点击切换源代码
使用 list
和 tag
发出一个序列
# File psych/lib/psych/coder.rb, line 48 def represent_seq tag, list @tag = tag self.seq = list end
scalar(*args) 点击切换源代码
# 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
scalar=(value) 点击切换源代码
使用 value
发射一个标量
# File psych/lib/psych/coder.rb, line 67 def scalar= value @type = :scalar @scalar = value end
seq=(list) 点击切换源代码
发射一个 list
序列
# File psych/lib/psych/coder.rb, line 90 def seq= list @type = :seq @seq = list end