Module: CamelSnakeKeys

Defined in:
lib/version.rb,
lib/camel_snake_keys.rb

Constant Summary collapse

VERSION =
'0.0.7'.freeze

Class Method Summary collapse

Class Method Details

.camel_keys(data, indifference = false) ⇒ Object



53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/camel_snake_keys.rb', line 53

def camel_keys(data, indifference=false)
  case data
  when Array
    data.map { |v| camel_keys(v, indifference) }
  when Hash
    hash = data.sort_by {|k, _v| k =~ /_/ ? 1 : 0 }.map {|k, v| [if_camelize(k), camel_keys(v, indifference)] }.to_h
    hash = hash.with_indifferent_access if indifference
    data.instance_of?(Hash) ? hash : data.class.new(hash)
  else
    data
  end
end

.if_camelize(obj) ⇒ Object



29
30
31
32
33
34
35
36
37
38
# File 'lib/camel_snake_keys.rb', line 29

def if_camelize(obj)
  case obj
  when Symbol
    obj.to_s.camelize(:lower).to_sym
  when String
    obj.camelize(:lower)
  else
    obj
  end
end

.if_underscore(obj) ⇒ Object



18
19
20
21
22
23
24
25
26
27
# File 'lib/camel_snake_keys.rb', line 18

def if_underscore(obj)
  case obj
  when Symbol
    obj.to_s.underscore.to_sym
  when String
    obj.underscore
  else
    obj
  end
end

.snake_keys(data, indifference = false) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/camel_snake_keys.rb', line 40

def snake_keys(data, indifference=false)
  case data
  when Array
    data.map { |v| snake_keys(v, indifference) }
  when Hash
    hash = data.sort_by {|k, _v| k =~ /_/ ? 0 : 1 }.map {|k, v| [if_underscore(k), snake_keys(v, indifference)] }.to_h
    hash = hash.with_indifferent_access if indifference
    data.instance_of?(Hash) ? hash : data.class.new(hash)
  else
    data
  end
end

.versionObject



4
5
6
# File 'lib/version.rb', line 4

def self.version
  VERSION
end