simple_params 0.0.2.pre8 → 0.0.2.pre9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- YjQ1MzU1MGIxNmU3ZTA4MGZhZGY5YTg4YjZmZTY0ZjI1NmE3MTU0OQ==
4
+ NDY4OWUwYTdkOTc5NmYwYjZlZjdjMmY3YzU4MWRkYWQ5ZGZlZWRhNQ==
5
5
  data.tar.gz: !binary |-
6
- ZmRiNWQ0ZjEwYjVmOWEzM2IzNGVhNTc1NTM1ODRjN2VlNDMwYTMwMA==
6
+ MDI5OGEzYjEzODU3ODJmNDMxMmExYzc1NGZlOGEwZmYyODUxNjg2Mw==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- YmU0MzFlNTYwNDdkYTY2Y2YyOGFhYmJiZWJmZmQ1OTUyYWVjNDE5MjA2OWRl
10
- ZmQzZjhlMDcxZTYxYzgxYzdkZjQwNzY0ZTJkNmIwNDE5NDdjMTRmYjYyMjMx
11
- M2Y2NDJmZTIzYzczNDY2OTFkMzNjZjZjMmM2MzA3Yjk2MGNlOWI=
9
+ YTY3YTQzMTY2YzRlYTE0ZGRlM2FkNDJmNDdlYzI2Zjc5Mjg0NzQ5OWRlODE0
10
+ NTAzM2NlYWE0NDFiZWYyY2M5NGUyNmYxOWI4ZDhhN2VmOTAxNzdkNTQ0MTYw
11
+ NjNlNzE3YmFlNmM3NDkwMTQ1ZmFhZDQxMGRmM2ZjOTgxMTBhMTc=
12
12
  data.tar.gz: !binary |-
13
- ZTg5MWUxNGFjY2VlMWNhMWNjN2EyNjRiZWI2MTEzMDgyOGIwODNjYTViNjI5
14
- MzRjODdhNTYwMTc4ZThiY2Q4NmY3Njk3NWI5NDYwNjg4MmZlMmUyYzI2ODAw
15
- ZjNjZWQ4NzQwZmIyZTlmYjEyOTJiNWQ1YjRiNjEzNzU2ODI4YTI=
13
+ MTBlZTQ0YTQ4NjNhODg1ZTE3NjJkY2E2ODAyOTRjZjQ5ZDE5NWI3ZjIxM2Nh
14
+ Mjg0MjdkNzI1MzRmZGRhNzhmYjZiNTk3YTZiOWUwNzg0N2NhMDQ2OWMxMjdi
15
+ NjU5NDg0YTU4NDQ3OGE1YjYxNGJmMGExYjkyNTdmNmUxMjAwYzA=
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- simple_params (0.0.2.pre7)
4
+ simple_params (0.0.2.pre8)
5
5
  activemodel (>= 3.0, < 5.0)
6
6
  virtus (>= 1.0.0)
7
7
 
data/README.md CHANGED
@@ -88,12 +88,12 @@ params = MyParams.new(
88
88
  )
89
89
 
90
90
  params.valid? #=> false
91
- params.errors[:name] #=> ["can't be blank"]
92
- params.errors[:address][:street] #=> ["can't be blank"]
93
- params.address.errors[:street] #=> ["can't be blank"]
91
+ params.errors[:name] #=> ["can't be blank"]
92
+ params.errors[:address][:street] #=> ["can't be blank"]
93
+ params.address.errors[:street] #=> ["can't be blank"]
94
94
 
95
- params.errors.as_json #=> {:name=>["can't be blank"], :address=>{:street=>["can't be blank"]}}
96
- params.address.errors.as_json #=> {:street=>["can't be blank"]}
95
+ params.errors.as_json #=> {:name=>["can't be blank"], :address=>{:street=>["can't be blank"]}}
96
+ params.address.errors.as_json #=> {:street=>["can't be blank"]}
97
97
  ```
98
98
 
99
99
  ## Defaults
@@ -138,7 +138,7 @@ params = CoercionParams.new(name: "Bob", age: "21", date_of_birth: "June 1st, 19
138
138
  params.name #=> "Bob"
139
139
  params.age #=> 21
140
140
  params.date_of_birth #=> #<Date: 1980-06-01>
141
- params.pocket_change #=> #<BigDecimal:89ed240,'0.235E1',18(18)>
141
+ params.pocket_change #=> #<BigDecimal:89ed240,'0.235E1',18(18)>
142
142
  ```
143
143
 
144
144
  SimpleParams also provide helper methods for implicitly specifying the type, if you prefer that syntax. Here is the same class as above, but redefined with these helper methods.
@@ -192,6 +192,40 @@ params.dog.name #=> "Bailey"
192
192
  params.dog.breed #=> "Shiba Inu"
193
193
  ```
194
194
 
195
+ # ApiPie Documentation
196
+
197
+ If your project is using [apipie-rails](http://example.com/ "apipie-rails"),
198
+ then SimpleParams is able to automatically generate the documentation markup
199
+ for apipie.
200
+
201
+ ```ruby
202
+ api :POST, '/objects', "Create a object"
203
+ eval(CreateObjectParams.api_pie_documentation)
204
+ ```
205
+
206
+ Note that in your SimpleParams class you can specify a few options on how the markup will be
207
+ created.
208
+
209
+ They include:
210
+ ```ruby
211
+ document: false # Will not document this parameter. Default is true
212
+ optional: true # This parameter is not required. Default is false
213
+ desc: 'description of parameter' # Default is blank
214
+ ```
215
+
216
+ Example:
217
+
218
+ ```ruby
219
+ class CreateObjectParams < SimpleParams::Params
220
+ param :user, type: User, document: false
221
+ param :name, type: :string, desc: 'Name of object', validations: { presence: true }
222
+
223
+ nested_hash :other_object do
224
+ param :color, optional: true, validations: { presence: true }
225
+ param :size, desc: 'Size of object', 'validations: { presence: true }
226
+ end
227
+ end
228
+ ```
195
229
 
196
230
  ## Contributing
197
231
 
@@ -199,4 +233,4 @@ params.dog.breed #=> "Shiba Inu"
199
233
  2. Create your feature branch (`git checkout -b my-new-feature`)
200
234
  3. Commit your changes (`git commit -am 'Add some feature'`)
201
235
  4. Push to the branch (`git push origin my-new-feature`)
202
- 5. Create new Pull Request
236
+ 5. Create new Pull Request
@@ -132,6 +132,12 @@ module SimpleParams
132
132
  (defined_attributes.keys + nested_hashes.keys).flatten
133
133
  end
134
134
 
135
+ def original_params
136
+ @original_params ||= {}
137
+ end
138
+ alias_method :original_hash, :original_params
139
+ alias_method :raw_params, :original_params
140
+
135
141
  # Overriding this method to allow for non-strict enforcement!
136
142
  def method_missing(method_name, *arguments, &block)
137
143
  if strict_enforcement?
@@ -171,7 +177,18 @@ module SimpleParams
171
177
  end
172
178
 
173
179
  def hash_to_symbolized_hash(hash)
174
- hash.inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo}
180
+ hash.inject({}){|result, (key, value)|
181
+ new_key = case key
182
+ when String then key.to_sym
183
+ else key
184
+ end
185
+ new_value = case value
186
+ when Hash then hash_to_symbolized_hash(value)
187
+ else value
188
+ end
189
+ result[new_key] = new_value
190
+ result
191
+ }
175
192
  end
176
193
 
177
194
  def defined_attributes
@@ -1,3 +1,3 @@
1
1
  module SimpleParams
2
- VERSION = "0.0.2.pre8"
2
+ VERSION = "0.0.2.pre9"
3
3
  end
@@ -15,10 +15,29 @@ class AcceptanceParams < SimpleParams::Params
15
15
  end
16
16
 
17
17
  describe SimpleParams::Params do
18
+ describe "original_params", original_params: true do
19
+ it "returns symbolized params hash" do
20
+ params = AcceptanceParams.new(name: "Tom", address: { "street" => "1 Main St."} )
21
+ params.original_params.should eq({
22
+ name: "Tom",
23
+ address: {
24
+ street: "1 Main St."
25
+ }
26
+ })
27
+ end
28
+
29
+ it "returns symbolized params for nested_hash" do
30
+ params = AcceptanceParams.new(name: "Tom", address: { "street" => "1 Main St."} )
31
+ params.address.original_params.should eq({
32
+ street: "1 Main St."
33
+ })
34
+ end
35
+ end
36
+
18
37
  describe "accessors", accessors: true do
19
38
  let(:params) { AcceptanceParams.new }
20
39
 
21
- it "has getter and setter methods for object param", failing: true do
40
+ it "has getter and setter methods for object param" do
22
41
  params.should respond_to(:reference)
23
42
  params.reference.should be_nil
24
43
  new_object = OpenStruct.new(count: 4)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple_params
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2.pre8
4
+ version: 0.0.2.pre9
5
5
  platform: ruby
6
6
  authors:
7
7
  - brycesenz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-04-07 00:00:00.000000000 Z
11
+ date: 2015-04-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel