module Params

Public Instance Methods

to_camelcase(h=self) click to toggle source

turns keys from snake_case to CamelCase

# File lib/ruby-macrodroid.rb, line 78
def to_camelcase(h=self)
  
  h.inject({}) do |r,x|
            
    key, value = x   
    
    val = if value.is_a?(Hash) then
      to_camelcase(value)
    elsif value.is_a?(Array) and value.first.is_a? Hash
      value.map {|row| to_camelcase(row)}
    else
      value          
    end
    
    r.merge({key.to_s.gsub(/(?<!^m)_[a-z]/){|x| x[-1].upcase} => val})
  end
  
end
to_snake_case(h=self) click to toggle source

turns keys from camelCase into snake_case

# File lib/ruby-macrodroid.rb, line 55
def to_snake_case(h=self)

  h.inject({}) do |r, x|

    key, value = x
    #puts 'value: ' + value.inspect
    
    val = if value.is_a?(Hash) then
      to_snake_case(value)
    elsif value.is_a?(Array) and value.first.is_a? Hash
      value.map {|row| to_snake_case(row)}
    else
      value          
    end
    
    r.merge key.to_s.sub(/^m_/,'').gsub(/[A-Z][a-z]/){|x| '_' + 
      x.downcase}.gsub(/[a-z][A-Z]/){|x| x[0] + '_' + x[1].downcase}\
      .downcase.to_sym => val

  end
end