Module: EJSONExt

Defined in:
lib/ejson_ext.rb,
lib/ejson_ext/version.rb,
lib/ejson_ext/decoders/node.rb,
lib/ejson_ext/key_val_parser.rb,
lib/ejson_ext/extensions/escape.rb,
lib/ejson_ext/decoders/null_node.rb,
lib/ejson_ext/encoders/time_type.rb,
lib/ejson_ext/extensions/default.rb,
lib/ejson_ext/decoders/start_node.rb,
lib/ejson_ext/extensions/time_ext.rb,
lib/ejson_ext/encoders/escape_type.rb,
lib/ejson_ext/encoders/default_type.rb,
lib/ejson_ext/encoders/recursive_type.rb

Defined Under Namespace

Modules: Decoders, Encoders, Extensions Classes: KeyValParser

Constant Summary collapse

VERSION =
"0.1.1"

Class Method Summary collapse

Class Method Details

.ejson_for_type(value) ⇒ Object



28
29
30
31
32
33
34
35
36
# File 'lib/ejson_ext.rb', line 28

def self.ejson_for_type(value)
  if value.is_a?(Hash)
    Hash[value.each.map { |key, val| KeyValParser.new(key, val).parse }]
  elsif value.is_a?(Array)
    value.map { |item| ejson_for_type(item) }
  else
    value
  end
end

.parse(item) ⇒ Object



16
17
18
19
20
21
22
# File 'lib/ejson_ext.rb', line 16

def self.parse(item)
  if item.is_a?(String)
    Decoders::StartNode.new(JSON.parse item).compile
  else
    fail %(EJSONExt.parse argument should be a string "#{item.class}" given)
  end
end

.stringify(value) ⇒ Object



24
25
26
# File 'lib/ejson_ext.rb', line 24

def self.stringify(value)
  ejson_for_type(value).to_json
end