Module: Funl::Blobber

Defined in:
lib/funl/blobber.rb

Defined Under Namespace

Modules: JSON_SYM, MessagePack_SYM

Constant Summary collapse

MARSHAL_TYPE =
ObjectStream::MARSHAL_TYPE
YAML_TYPE =
ObjectStream::YAML_TYPE
JSON_TYPE =
ObjectStream::JSON_TYPE
MSGPACK_TYPE =
ObjectStream::MSGPACK_TYPE

Class Method Summary collapse

Class Method Details

.for(type, symbolize_keys: false) ⇒ Object

Returns something which responds to #dump(obj) and #load(str).



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/funl/blobber.rb', line 31

def self.for type, symbolize_keys: false
  case type
  when MARSHAL_TYPE
    Marshal

  when YAML_TYPE
    require 'yaml'
    YAML

  when JSON_TYPE
    require 'yajl'
    require 'yajl/json_gem'
    ## would 'json' conflict with yajl required from other libs?
    if symbolize_keys
      JSON_SYM
    else
      JSON
    end

  when MSGPACK_TYPE
    require 'msgpack'
    if symbolize_keys
      MessagePack_SYM
    else
      MessagePack
    end

  else
    raise ArgumentError, "unknown type: #{type.inspect}"
  end
end