Sha256: 27fe62e3843be5520e6ad4669ec79fb35dafb456156cc5d404422000bb925e6e

Contents?: true

Size: 1.35 KB

Versions: 1

Compression:

Stored size: 1.35 KB

Contents

module Opsource
  module Params
    def url_query(params)
      params = camelize_keys(params)
      qitems = []
      params.each do |k, vs|
        vs = [vs].flatten.compact # remove nil values
        vs.each {|v| qitems << "#{k}=#{v}"}
      end
      qitems.join('&')
    end

    def symbolize_keys(arg)
      case arg
      when Array
        arg.map {  |elem| symbolize_keys elem }
      when Hash
        Hash[
          arg.map {  |key, value|
            k = key.is_a?(String) ? key.to_sym : key
            v = symbolize_keys value
            [k,v]
          }]
      else
        arg
      end
    end

    def underscore_keys(arg)
      case arg
      when Array
        arg.map {  |elem| underscore_keys elem }
      when Hash
        Hash[
          arg.map {  |key, value|
            k = key.is_a?(String) ? key.underscore : key
            v = underscore_keys value
            [k,v]
          }]
      else
        arg
      end
    end

    def camelize_keys(arg)
      case arg
      when Array
        arg.map {  |elem| camelize_keys elem }
      when Hash
        Hash[
          arg.map {  |key, value|
            k = key.is_a?(String) ? key.camelize(:lower) : key
            k = key.is_a?(Symbol) ? key.to_s.camelize(:lower).to_sym : key
            v = camelize_keys value
            [k,v]
          }]
      else
        arg
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
didata_cloud_sdk-0.3.1 lib/opsource/params.rb