Skip to content

Instantly share code, notes, and snippets.

@rummelonp
Last active December 23, 2015 22:19
Show Gist options
  • Save rummelonp/6702878 to your computer and use it in GitHub Desktop.
Save rummelonp/6702878 to your computer and use it in GitHub Desktop.
Hash の key を camelize するやつ
# -*- coding: utf-8 -*-
require 'active_support/core_ext'
class Hash
def camelize_keys(first_letter = :upper)
dup.camelize_keys!(first_letter)
end
def camelize_keys!(first_letter = :upper)
keys.each do |key|
self[key.to_s.camelize(first_letter)] = delete(key)
end
self
end
def deep_camelize_keys(first_letter = :upper)
dup.deep_camelize_keys!(first_letter)
end
def deep_camelize_keys!(first_letter = :upper)
keys.each do |key|
value = delete(key)
self[key.to_s.camelize(first_letter)] = value.is_a?(Hash) ? value.deep_camelize_keys(first_letter) : value
end
self
end
end
status = {
id: 1,
text: 'にゃーん',
user: {
screen_name: 'mitukiii',
},
created_at: Time.now,
}
p status
p status.camelize_keys
p status.camelize_keys(:lower)
p status.deep_camelize_keys
p status.deep_camelize_keys(:lower)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment