Class: Hash
- Inherits:
-
Object
- Object
- Hash
- Defined in:
- lib/ext/hash.rb
Class Method Summary collapse
Instance Method Summary collapse
- #_escape(value) ⇒ Object
- #case_indifferent_delete(key) ⇒ Object
- #case_indifferent_merge(incoming_hash) ⇒ Object
- #to_params ⇒ Object
Class Method Details
.from_array(array = []) ⇒ Object
60 61 62 63 64 65 66 |
# File 'lib/ext/hash.rb', line 60 def self.from_array(array = []) h = Hash.new array.size.times do |t| h[t] = array[t] end h end |
Instance Method Details
#_escape(value) ⇒ Object
4 5 6 7 8 |
# File 'lib/ext/hash.rb', line 4 def _escape(value) Addressable::URI.encode(Addressable::URI.parse(value.to_s)) rescue ArgumentError Addressable::URI.encode(Addressable::URI.parse(value.to_s.force_encoding(Encoding::UTF_8))) end |
#case_indifferent_delete(key) ⇒ Object
39 40 41 42 43 44 45 |
# File 'lib/ext/hash.rb', line 39 def case_indifferent_delete key existing_keys = self.keys.map { |k| k.downcase } index = existing_keys.index(key.downcase) unless index.nil? self.delete(self.keys[index]) end end |
#case_indifferent_merge(incoming_hash) ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/ext/hash.rb', line 47 def case_indifferent_merge incoming_hash existing_keys = self.keys.map { |k| k.downcase } incoming_hash.each do |key, value| index = existing_keys.index(key.downcase) if index.nil? self[key] = value else self[self.keys[index]] = value end end end |
#to_params ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/ext/hash.rb', line 10 def to_params params = '' stack = [] each do |k, v| if v.is_a?(Hash) stack << [k,v] elsif v.is_a?(Array) stack << [k,Hash.from_array(v)] else params << "#{_escape(k)}=#{_escape(v)}&" end end stack.each do |parent, hash| parent = _escape(parent) if parent.is_a? String hash.each do |k, v| if v.is_a?(Hash) stack << ["#{parent}[#{k}]", v] else params << "#{parent}[#{k}]=#{_escape(v)}&" end end end params.chop! params end |