module Hawkei::Util
Constants
- DATE_FORMAT
- DEFAULT_OBJECT_DEF
- OBFUSCATED
Public Class Methods
Convert string to camelize
@param [String]
@example
camelize('my_model') => 'MyModel'
# File lib/hawkei/util.rb, line 27 def camelize(string) string.split('_').map(&:capitalize).join end
Remove nil value from hash
@return [Hash]
# File lib/hawkei/util.rb, line 35 def compact(hash) hash.reject { |_, value| value.nil? } end
Remove nil value from hash recursively
@return [Hash]
# File lib/hawkei/util.rb, line 43 def deep_compact(object) object.each_with_object({}) do |(key, value), result| if value.is_a?(Hash) value = deep_compact(value) result[key] = value if !value.nil? && !value.empty? else result[key] = value unless value.nil? end end end
Deep remove key from hash
@param [Hash] hash to obfuscate
@return [Hash] hash obfuscated
# File lib/hawkei/util.rb, line 141 def deep_obfuscate_value(object, fields, obfuscate_name = OBFUSCATED) case object when Hash object.each_with_object({}) do |(key, value), result| result[key] = fields.include?(key.to_s) ? obfuscate_name : deep_obfuscate_value(value, fields) end when Array object.map { |e| deep_obfuscate_value(e, fields) } else object end end
Deep convert hash to string keys
@param [Hash] hash to transform
@return [Hash] transformed
# File lib/hawkei/util.rb, line 109 def deep_stringify_key(hash_object) deep_transform_keys_in_object(hash_object) do |key| begin key.to_s rescue StandardError => _e key end end end
Deep convert hash to symbol keys
@param [Hash] hash to transform
@return [Hash] transformed
# File lib/hawkei/util.rb, line 125 def deep_symbolize_key(hash_object) deep_transform_keys_in_object(hash_object) do |key| begin key.to_sym rescue StandardError => _e key end end end
Deep convert hash to underscore case keys
@param [Hash] hash to transform
@return [Hash] transformed
# File lib/hawkei/util.rb, line 93 def deep_underscore_key(hash_object) deep_transform_keys_in_object(hash_object) do |key| begin underscore(key).to_sym rescue StandardError => _e key end end end
Encodes a hash of parameters in a way that's suitable for use as query parameters in a URI or as form parameters in a request body. This mainly involves escaping special characters from parameter keys and values (e.g. `&`).
# File lib/hawkei/util.rb, line 59 def encode_parameters(params = {}) params.map { |k, v| "#{url_encode(k)}=#{url_encode(v)}" }.join('&') end
Remove keys from a Hash
@param [Hash] to be excepted @param [List] to be excepted
@return [Hash]
# File lib/hawkei/util.rb, line 16 def except_keys(hash, *keys) hash.dup.delete_if { |(key, _value)| keys.include?(key) } end
Parse JSON without raise
# File lib/hawkei/util.rb, line 157 def safe_json_parse(data) JSON.parse(data.to_s) rescue JSON::ParserError {} end
Convert string to underscore
@param [String]
@example
underscore('MyModel') => 'my_model'
# File lib/hawkei/util.rb, line 78 def underscore(string) string .gsub(/::/, '/') .gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2') .gsub(/([a-z\d])([A-Z])/, '\1_\2') .tr('-', '_') .downcase end
Encodes a string in a way that makes it suitable for use in a set of query parameters in a URI or in a set of form parameters in a request body.
# File lib/hawkei/util.rb, line 67 def url_encode(key) CGI.escape(key.to_s).gsub('%5B', '[').gsub('%5D', ']') end
Private Class Methods
# File lib/hawkei/util.rb, line 165 def deep_transform_keys_in_object(object, &block) case object when Hash object.each_with_object({}) do |(key, value), result| result[yield(key)] = deep_transform_keys_in_object(value, &block) end when Array object.map { |e| deep_transform_keys_in_object(e, &block) } else object end end