class Gfycat::Middleware::Response::SnakeCaseKeys

Public Instance Methods

call(env) click to toggle source
# File lib/gfycat/middleware/response/snake_case_keys.rb, line 7
def call(env)
  @app.call(env).on_complete do |env|
    env[:body] = convert_value(env[:body])
  end
end

Protected Instance Methods

convert_key(key) click to toggle source
# File lib/gfycat/middleware/response/snake_case_keys.rb, line 14
def convert_key(key)
  key.to_s.strip.
    gsub(" ", "_").
    gsub(/::/, "/").
    gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2').
    gsub(/([a-z\d])([A-Z])/, '\1_\2').
    tr("-", "_").
    squeeze("_").
    downcase
end
convert_value(value) click to toggle source
# File lib/gfycat/middleware/response/snake_case_keys.rb, line 25
def convert_value(value)
  case value
  when Array
    value.map { |v| convert_value(v) }
  when Hash
    Hash[value.map { |k, v| [convert_key(k), convert_value(v)] }]
  else
    value
  end
end