extlib 0.9.4 → 0.9.5

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of extlib might be problematic. Click here for more details.

@@ -91,31 +91,42 @@ class Hash
91
91
  # :phones => ['111-111-1111', '222-222-2222']
92
92
  # }
93
93
  # }.to_params
94
- # #=> "name=Bob&address[city]=Ruby Central&address[phones]=111-111-1111222-222-2222&address[street]=111 Ruby Ave."
94
+ # #=> "name=Bob&address[city]=Ruby Central&address[phones][]=111-111-1111&address[phones][]=222-222-2222&address[street]=111 Ruby Ave."
95
95
  def to_params
96
- params = ''
96
+ params = self.map { |k,v| normalize_param(k,v) }.join
97
+ params.chop! # trailing &
98
+ params
99
+ end
100
+
101
+ # @param key<Object> The key for the param.
102
+ # @param value<Object> The value for the param.
103
+ #
104
+ # @return <String> This key value pair as a param
105
+ #
106
+ # @example normalize_param(:name, "Bob") #=> "name=Bob&"
107
+ def normalize_param(key, value)
108
+ param = ''
97
109
  stack = []
98
110
 
99
- each do |k, v|
100
- if v.is_a?(Hash)
101
- stack << [k,v]
102
- else
103
- params << "#{k}=#{v}&"
104
- end
111
+ if value.is_a?(Array)
112
+ param << value.map { |element| normalize_param("#{key}[]", element) }.join
113
+ elsif value.is_a?(Hash)
114
+ stack << [key,value]
115
+ else
116
+ param << "#{key}=#{value}&"
105
117
  end
106
118
 
107
119
  stack.each do |parent, hash|
108
- hash.each do |k, v|
109
- if v.is_a?(Hash)
110
- stack << ["#{parent}[#{k}]", v]
120
+ hash.each do |key, value|
121
+ if value.is_a?(Hash)
122
+ stack << ["#{parent}[#{key}]", value]
111
123
  else
112
- params << "#{parent}[#{k}]=#{v}&"
124
+ param << normalize_param("#{parent}[#{key}]", value)
113
125
  end
114
126
  end
115
127
  end
116
128
 
117
- params.chop! # trailing &
118
- params
129
+ param
119
130
  end
120
131
 
121
132
  # @param *allowed<Array[(String, Symbol)]> The hash keys to include.
@@ -83,11 +83,6 @@ class Mash < Hash
83
83
  indices.collect {|key| self[convert_key(key)]}
84
84
  end
85
85
 
86
- # @return <Mash> A duplicate of this mash.
87
- def dup
88
- Mash.new(self)
89
- end
90
-
91
86
  # @param hash<Hash> The hash to merge with the mash.
92
87
  #
93
88
  # @return <Mash> A new mash with the hash values merged in.
@@ -1,3 +1,3 @@
1
1
  module Extlib
2
- VERSION = "0.9.4"
2
+ VERSION = "0.9.5"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: extlib
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.4
4
+ version: 0.9.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sam Smoot
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-08-12 00:00:00 +03:00
12
+ date: 2008-08-26 00:00:00 +03:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency