Module: RLP::Sedes
- Defined in:
- lib/rlp/sedes.rb,
lib/rlp/sedes/raw.rb,
lib/rlp/sedes/list.rb,
lib/rlp/sedes/binary.rb,
lib/rlp/sedes/serializable.rb,
lib/rlp/sedes/big_endian_int.rb,
lib/rlp/sedes/countable_list.rb
Defined Under Namespace
Modules: Serializable
Classes: BigEndianInt, Binary, CountableList, List, Raw
Class Method Summary
collapse
Class Method Details
.big_endian_int ⇒ Object
38
39
40
|
# File 'lib/rlp/sedes.rb', line 38
def big_endian_int
@big_endian_int ||= BigEndianInt.new
end
|
.binary ⇒ Object
42
43
44
|
# File 'lib/rlp/sedes.rb', line 42
def binary
@binary ||= Binary.new
end
|
.infer(obj) ⇒ Object
Try to find a sedes objects suitable for a given Ruby object.
The sedes objects considered are ‘obj`’s class, ‘big_endian_int` and `binary`. If `obj` is a list, a `RLP::Sedes::List` will be constructed recursively.
25
26
27
28
29
30
31
32
|
# File 'lib/rlp/sedes.rb', line 25
def infer(obj)
return obj.class if sedes?(obj.class)
return big_endian_int if obj.is_a?(Integer) && obj >= 0
return binary if Binary.valid_type?(obj)
return List.new(elements: obj.map {|item| infer(item) }) if RLP.list?(obj)
raise TypeError, "Did not find sedes handling type #{obj.class.name}"
end
|
.raw ⇒ Object
46
47
48
|
# File 'lib/rlp/sedes.rb', line 46
def raw
@raw ||= Raw.new
end
|
.sedes?(obj) ⇒ Boolean
34
35
36
|
# File 'lib/rlp/sedes.rb', line 34
def sedes?(obj)
obj.respond_to?(:serialize) && obj.respond_to?(:deserialize)
end
|