Class: Hash
- Inherits:
-
Object
- Object
- Hash
- Defined in:
- lib/to_lang/core_ext.rb
Overview
Hash extensions taken from John Nunemaker’s Crack gem.
Crack was previously a dependency for HTTParty, but since it no longer is, the methods being used by ToLang are included here directly.
Instance Method Summary collapse
-
#normalize_param(key, value) ⇒ String
Turns a key value pair into a string suitable for HTTP requests.
-
#to_params ⇒ String
Convert the entire has into a string suitable for HTTP requests.
Instance Method Details
#normalize_param(key, value) ⇒ String
Turns a key value pair into a string suitable for HTTP requests.
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/to_lang/core_ext.rb', line 25 def normalize_param(key, value) param = '' stack = [] if value.is_a?(Array) param << value.map { |element| normalize_param("#{key}[]", element) }.join elsif value.is_a?(Hash) stack << [key,value] else param << "#{key}=#{URI.encode(value.to_s, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))}&" end stack.each do |parent, hash| hash.each do |key, value| if value.is_a?(Hash) stack << ["#{parent}[#{key}]", value] else param << normalize_param("#{parent}[#{key}]", value) end end end param end |
#to_params ⇒ String
Convert the entire has into a string suitable for HTTP requests.
12 13 14 15 16 |
# File 'lib/to_lang/core_ext.rb', line 12 def to_params params = self.map { |k,v| normalize_param(k,v) }.join params.chop! # trailing & params end |