類別 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 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

公開執行個體方法

[](k) 按一下以切換來源
# File ext/psych/lib/psych/coder.rb, line 84
def [] k
  @type = :map
  @map[k]
end
[]=(k, v) 按一下以切換來源
# File ext/psych/lib/psych/coder.rb, line 78
def []= k, v
  @type = :map
  @map[k] = v
end
別名為: add
add(k, v)
別名為: []=
map(tag = @tag, style = @style) { |self| ... } 按一下以切換來源

發出對應。編碼器會傳遞給區塊。

# 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
map=(map) 按一下以切換來源

使用 value 發出對應

# File ext/psych/lib/psych/coder.rb, line 73
def map= map
  @type = :map
  @map  = map
end
represent_map(tag, map) 按一下以切換來源

使用 maptag 發出順序

# File ext/psych/lib/psych/coder.rb, line 54
def represent_map tag, map
  @tag = tag
  self.map = map
end
represent_object(tag, obj) 按一下以切換來源

發出任意物件 objtag

# File ext/psych/lib/psych/coder.rb, line 60
def represent_object tag, obj
  @tag    = tag
  @type   = :object
  @object = obj
end
represent_scalar(tag, value) 按一下以切換來源

使用 valuetag 發出純量

# File ext/psych/lib/psych/coder.rb, line 42
def represent_scalar tag, value
  self.tag    = tag
  self.scalar = value
end
represent_seq(tag, list) 按一下以切換來源

listtag 發出序列

# File ext/psych/lib/psych/coder.rb, line 48
def represent_seq tag, list
  @tag = tag
  self.seq = list
end
scalar(*args) 按一下以切換來源
# 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) 按一下以切換來源

value 發出純量

# File ext/psych/lib/psych/coder.rb, line 67
def scalar= value
  @type   = :scalar
  @scalar = value
end
seq=(list) 按一下以切換來源

發出 list 的序列

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