Module: UsefulDB::JSONEncoder

Defined in:
lib/usefuldb/json_encoder.rb

Class Method Summary collapse

Class Method Details

.encode(value) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/usefuldb/json_encoder.rb', line 11

def encode(value)
  case value
  when Hash
    "{" + value.map { |key, item| "#{encode(key.to_s)}:#{encode(item)}" }.join(",") + "}"
  when Array
    "[" + value.map { |item| encode(item) }.join(",") + "]"
  when String
    '"' + escape(value) + '"'
  when Numeric, TrueClass, FalseClass
    value.to_s
  when NilClass
    "null"
  else
    encode(value.to_s)
  end
end

.escape(value) ⇒ Object



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

def escape(value)
  value.gsub("\\", "\\\\")
    .gsub('"', '\\"')
    .gsub("\b", "\\b")
    .gsub("\f", "\\f")
    .gsub("\n", "\\n")
    .gsub("\r", "\\r")
    .gsub("\t", "\\t")
end

.generate(value) ⇒ Object



7
8
9
# File 'lib/usefuldb/json_encoder.rb', line 7

def generate(value)
  encode(value)
end