sucker 1.3.0.pre.2 → 1.3.0.pre.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. data/README.md +32 -19
  2. data/lib/sucker.rb +0 -1
  3. data/lib/sucker.rbc +281 -0
  4. data/lib/sucker/parameters.rb +4 -8
  5. data/lib/sucker/parameters.rbc +723 -0
  6. data/lib/sucker/request.rb +1 -3
  7. data/lib/sucker/request.rbc +2674 -0
  8. data/lib/sucker/response.rb +9 -32
  9. data/lib/sucker/response.rbc +1319 -0
  10. data/lib/sucker/response/hash.rb +46 -0
  11. data/lib/sucker/version.rb +2 -4
  12. data/lib/sucker/version.rbc +130 -0
  13. data/spec/spec_helper.rb +4 -4
  14. data/spec/spec_helper.rbc +230 -0
  15. data/spec/sucker/parameters_spec.rbc +1476 -0
  16. data/spec/sucker/request_spec.rb +0 -11
  17. data/spec/sucker/request_spec.rbc +2642 -0
  18. data/spec/sucker/response/hash_spec.rb +43 -0
  19. data/spec/sucker/response_spec.rb +3 -18
  20. data/spec/sucker/response_spec.rbc +2854 -0
  21. data/spec/sucker_spec.rbc +287 -0
  22. data/spec/support/amazon_credentials.rbc +154 -0
  23. data/spec/support/asins.rbc +335 -0
  24. data/spec/support/vcr.rbc +356 -0
  25. metadata +36 -52
  26. data/spec/fixtures/cassette_library/067972110x.yml +0 -26
  27. data/spec/fixtures/cassette_library/integration/alternate_versions.yml +0 -26
  28. data/spec/fixtures/cassette_library/integration/errors.yml +0 -26
  29. data/spec/fixtures/cassette_library/integration/france.yml +0 -26
  30. data/spec/fixtures/cassette_library/integration/images.yml +0 -26
  31. data/spec/fixtures/cassette_library/integration/item_lookup/multiple.yml +0 -26
  32. data/spec/fixtures/cassette_library/integration/item_lookup/single.yml +0 -26
  33. data/spec/fixtures/cassette_library/integration/item_search.yml +0 -26
  34. data/spec/fixtures/cassette_library/integration/japan.yml +0 -26
  35. data/spec/fixtures/cassette_library/integration/keyword_search.yml +0 -26
  36. data/spec/fixtures/cassette_library/integration/kindle.yml +0 -26
  37. data/spec/fixtures/cassette_library/integration/kindle_2.yml +0 -26
  38. data/spec/fixtures/cassette_library/integration/multiple_locales.yml +0 -151
  39. data/spec/fixtures/cassette_library/integration/power_search.yml +0 -26
  40. data/spec/fixtures/cassette_library/integration/related_items/child.yml +0 -26
  41. data/spec/fixtures/cassette_library/integration/related_items/parent.yml +0 -26
  42. data/spec/fixtures/cassette_library/integration/seller_listings_search.yml +0 -26
  43. data/spec/fixtures/cassette_library/integration/twenty_items.yml +0 -26
  44. data/spec/fixtures/cassette_library/unit/sucker/request.yml +0 -61
  45. data/spec/fixtures/cassette_library/unit/sucker/response.yml +0 -26
data/README.md CHANGED
@@ -1,18 +1,19 @@
1
1
  Sucker
2
2
  ======
3
3
 
4
- Sucker is a [Nokogiri-](http://github.com/rails/rails/blob/master/activesupport/lib/active_support/xml_mini/nokogiri.rb)based Ruby wrapper to the [Amazon Product Advertising API](https://affiliate-program.amazon.co.uk/gp/advertising/api/detail/main.html).
4
+ Sucker is a Nokogiri-based Ruby wrapper to the [Amazon Product Advertising API](https://affiliate-program.amazon.co.uk/gp/advertising/api/detail/main.html).
5
5
 
6
- It's fast and supports __the entire API__.
6
+ It's minimalist and fast. It supports __the entire API__.
7
7
 
8
8
  ![Electrolux](https://github.com/papercavalier/sucker/raw/master/electrolux.jpg)
9
9
 
10
+ Trim fat
11
+ --------
12
+ 1.3.0.pre has major changes under the hood.
10
13
 
11
- 1.3.0.pre
12
- ---------
13
- This release has major changes under the hood.
14
+ Active Support and Curb are no more.
14
15
 
15
- I replaced curb with Net::HTTP to make the library JRuby compatible and edited out some nonessential code. Check [here](http://rdoc.info/github/papercavalier/sucker/master/frames) to see what's left.
16
+ I edited out some nonessential methods. Check [here](http://rdoc.info/github/papercavalier/sucker/master/frames) to see what's left.
16
17
 
17
18
  Usage
18
19
  -----
@@ -32,13 +33,13 @@ Build a request.
32
33
  "ItemId" => '0816614024',
33
34
  "ResponseGroup" => 'ItemAttributes' }
34
35
 
35
- Get a response.
36
+ Literally, get a response.
36
37
 
37
38
  response = worker.get
38
39
 
39
- Consume.
40
+ Time for some business logic.
40
41
 
41
- items = response.find('Item') if response.valid?
42
+ items = response['Item'] if response.valid?
42
43
 
43
44
  Repeat ad infinitum.
44
45
 
@@ -47,27 +48,37 @@ Repeat ad infinitum.
47
48
  [Read the API.](https://affiliate-program.amazon.co.uk/gp/advertising/api/detail/main.html)
48
49
 
49
50
 
50
- Multiple local IPs
51
- ------------------
51
+ Monkey-patch that Net::HTTP
52
+ ---------------------------
53
+
54
+ Amazon limits calls to a venue to one per second per IP address.
55
+
56
+ If your server has multiple local interfaces, do the following:
52
57
 
53
- Amazon limits calls to a venue to one per second per IP. If you have
54
- multiple interfaces set up and want to use all to query Amazon, just do:
58
+ your_ips.each do |ip|
59
+ Thread.new do
60
+ worker.local_ip = ip
61
+ worker.get
62
+ end
63
+ end
55
64
 
56
- worker.local_ip = '75.80.85.90'
57
- worker.get # This request will route through the above IP
65
+ Throttle calls
66
+ ----------------
67
+
68
+ Use [Throttler](https://github.com/papercavalier/throttler) to throttle calls to one per second per IP address. Let me know if you figure out a more elegant solution.
58
69
 
59
70
  More concise syntax
60
71
  -------------------
61
72
 
62
- If you are on Ruby 1.9, try:
73
+ If you are on Ruby 1.9, do:
63
74
 
64
75
  worker << {
65
76
  operation: 'ItemLookup',
66
77
  id_type: 'ASIN',
67
78
  item_id: '0816614024' }
68
79
 
69
- Stubbing
70
- --------
80
+ Stub
81
+ ----
71
82
 
72
83
  Use [VCR](http://github.com/myronmarston/vcr).
73
84
 
@@ -78,7 +89,9 @@ Compatibility
78
89
 
79
90
  Specs pass against Ruby 1.8.7, Ruby 1.9.2, JRuby 1.5.6, and Rubinius 1.2.1.
80
91
 
81
- Morale of the story
92
+ Morale(s) of the story
82
93
  -------------------
83
94
 
84
95
  Don't overabstract a spaghetti API.
96
+
97
+ Fancy a DSL? Write your own on top of this.
data/lib/sucker.rb CHANGED
@@ -1,6 +1,5 @@
1
1
  # encoding: utf-8
2
2
 
3
- require 'sucker/parameters'
4
3
  require 'sucker/request'
5
4
  require 'sucker/response'
6
5
 
data/lib/sucker.rbc ADDED
@@ -0,0 +1,281 @@
1
+ !RBIX
2
+ 0
3
+ x
4
+ M
5
+ 1
6
+ n
7
+ n
8
+ x
9
+ 10
10
+ __script__
11
+ i
12
+ 55
13
+ 5
14
+ 7
15
+ 0
16
+ 64
17
+ 47
18
+ 49
19
+ 1
20
+ 1
21
+ 15
22
+ 5
23
+ 7
24
+ 2
25
+ 64
26
+ 47
27
+ 49
28
+ 1
29
+ 1
30
+ 15
31
+ 5
32
+ 7
33
+ 3
34
+ 64
35
+ 47
36
+ 49
37
+ 1
38
+ 1
39
+ 15
40
+ 99
41
+ 7
42
+ 4
43
+ 65
44
+ 49
45
+ 5
46
+ 2
47
+ 13
48
+ 99
49
+ 12
50
+ 7
51
+ 6
52
+ 12
53
+ 7
54
+ 7
55
+ 12
56
+ 65
57
+ 12
58
+ 49
59
+ 8
60
+ 4
61
+ 15
62
+ 49
63
+ 6
64
+ 0
65
+ 15
66
+ 2
67
+ 11
68
+ I
69
+ 6
70
+ I
71
+ 0
72
+ I
73
+ 0
74
+ I
75
+ 0
76
+ n
77
+ p
78
+ 9
79
+ s
80
+ 17
81
+ sucker/parameters
82
+ x
83
+ 7
84
+ require
85
+ s
86
+ 14
87
+ sucker/request
88
+ s
89
+ 15
90
+ sucker/response
91
+ x
92
+ 6
93
+ Sucker
94
+ x
95
+ 11
96
+ open_module
97
+ x
98
+ 15
99
+ __module_init__
100
+ M
101
+ 1
102
+ n
103
+ n
104
+ x
105
+ 6
106
+ Sucker
107
+ i
108
+ 13
109
+ 5
110
+ 66
111
+ 99
112
+ 7
113
+ 0
114
+ 7
115
+ 1
116
+ 65
117
+ 5
118
+ 49
119
+ 2
120
+ 4
121
+ 11
122
+ I
123
+ 5
124
+ I
125
+ 0
126
+ I
127
+ 0
128
+ I
129
+ 0
130
+ n
131
+ p
132
+ 3
133
+ x
134
+ 3
135
+ new
136
+ M
137
+ 1
138
+ n
139
+ n
140
+ x
141
+ 3
142
+ new
143
+ i
144
+ 43
145
+ 23
146
+ 0
147
+ 10
148
+ 14
149
+ 44
150
+ 43
151
+ 0
152
+ 78
153
+ 49
154
+ 1
155
+ 1
156
+ 19
157
+ 0
158
+ 15
159
+ 45
160
+ 2
161
+ 3
162
+ 13
163
+ 71
164
+ 4
165
+ 47
166
+ 9
167
+ 37
168
+ 47
169
+ 49
170
+ 5
171
+ 0
172
+ 13
173
+ 20
174
+ 0
175
+ 47
176
+ 49
177
+ 6
178
+ 1
179
+ 15
180
+ 8
181
+ 42
182
+ 20
183
+ 0
184
+ 49
185
+ 4
186
+ 1
187
+ 11
188
+ I
189
+ 4
190
+ I
191
+ 1
192
+ I
193
+ 0
194
+ I
195
+ 1
196
+ n
197
+ p
198
+ 7
199
+ x
200
+ 4
201
+ Hash
202
+ x
203
+ 16
204
+ new_from_literal
205
+ x
206
+ 7
207
+ Request
208
+ n
209
+ x
210
+ 3
211
+ new
212
+ x
213
+ 8
214
+ allocate
215
+ x
216
+ 10
217
+ initialize
218
+ p
219
+ 5
220
+ I
221
+ -1
222
+ I
223
+ 13
224
+ I
225
+ e
226
+ I
227
+ 14
228
+ I
229
+ 2b
230
+ x
231
+ 44
232
+ /Users/hakanensari/code/sucker/lib/sucker.rb
233
+ p
234
+ 1
235
+ x
236
+ 4
237
+ args
238
+ x
239
+ 13
240
+ attach_method
241
+ p
242
+ 3
243
+ I
244
+ 2
245
+ I
246
+ 13
247
+ I
248
+ d
249
+ x
250
+ 44
251
+ /Users/hakanensari/code/sucker/lib/sucker.rb
252
+ p
253
+ 0
254
+ x
255
+ 13
256
+ attach_method
257
+ p
258
+ 9
259
+ I
260
+ 0
261
+ I
262
+ 3
263
+ I
264
+ 9
265
+ I
266
+ 4
267
+ I
268
+ 12
269
+ I
270
+ 5
271
+ I
272
+ 1b
273
+ I
274
+ a
275
+ I
276
+ 37
277
+ x
278
+ 44
279
+ /Users/hakanensari/code/sucker/lib/sucker.rb
280
+ p
281
+ 0
@@ -1,10 +1,5 @@
1
- # encoding: utf-8
2
-
3
- require 'active_support/inflector'
4
-
5
- module Sucker #:nodoc:
6
-
7
- class Parameters < Hash #:nodoc:
1
+ module Sucker
2
+ class Parameters < Hash
8
3
  API_VERSION = '2010-11-01'
9
4
  SERVICE = 'AWSECommerceService'
10
5
 
@@ -14,11 +9,12 @@ module Sucker #:nodoc:
14
9
  self.store 'Timestamp', timestamp
15
10
  end
16
11
 
12
+ # Ensures all keys and values are strings and camelizes former.
17
13
  def normalize
18
14
  inject({}) do |hash, kv|
19
15
  k, v = kv
20
16
  v = v.is_a?(Array) ? v.join(',') : v.to_s
21
- hash[k.to_s.camelize] = v
17
+ hash[k.to_s.split('_').map {|w| w[0, 1] = w[0, 1].upcase; w }.join] = v
22
18
  hash
23
19
  end
24
20
  end
@@ -0,0 +1,723 @@
1
+ !RBIX
2
+ 0
3
+ x
4
+ M
5
+ 1
6
+ n
7
+ n
8
+ x
9
+ 10
10
+ __script__
11
+ i
12
+ 37
13
+ 5
14
+ 7
15
+ 0
16
+ 64
17
+ 47
18
+ 49
19
+ 1
20
+ 1
21
+ 15
22
+ 99
23
+ 7
24
+ 2
25
+ 65
26
+ 49
27
+ 3
28
+ 2
29
+ 13
30
+ 99
31
+ 12
32
+ 7
33
+ 4
34
+ 12
35
+ 7
36
+ 5
37
+ 12
38
+ 65
39
+ 12
40
+ 49
41
+ 6
42
+ 4
43
+ 15
44
+ 49
45
+ 4
46
+ 0
47
+ 15
48
+ 2
49
+ 11
50
+ I
51
+ 6
52
+ I
53
+ 0
54
+ I
55
+ 0
56
+ I
57
+ 0
58
+ n
59
+ p
60
+ 7
61
+ s
62
+ 24
63
+ active_support/inflector
64
+ x
65
+ 7
66
+ require
67
+ x
68
+ 6
69
+ Sucker
70
+ x
71
+ 11
72
+ open_module
73
+ x
74
+ 15
75
+ __module_init__
76
+ M
77
+ 1
78
+ n
79
+ n
80
+ x
81
+ 6
82
+ Sucker
83
+ i
84
+ 31
85
+ 5
86
+ 66
87
+ 99
88
+ 7
89
+ 0
90
+ 45
91
+ 1
92
+ 2
93
+ 65
94
+ 49
95
+ 3
96
+ 3
97
+ 13
98
+ 99
99
+ 12
100
+ 7
101
+ 4
102
+ 12
103
+ 7
104
+ 5
105
+ 12
106
+ 65
107
+ 12
108
+ 49
109
+ 6
110
+ 4
111
+ 15
112
+ 49
113
+ 4
114
+ 0
115
+ 11
116
+ I
117
+ 6
118
+ I
119
+ 0
120
+ I
121
+ 0
122
+ I
123
+ 0
124
+ n
125
+ p
126
+ 7
127
+ x
128
+ 10
129
+ Parameters
130
+ x
131
+ 4
132
+ Hash
133
+ n
134
+ x
135
+ 10
136
+ open_class
137
+ x
138
+ 14
139
+ __class_init__
140
+ M
141
+ 1
142
+ n
143
+ n
144
+ x
145
+ 10
146
+ Parameters
147
+ i
148
+ 68
149
+ 5
150
+ 66
151
+ 65
152
+ 7
153
+ 0
154
+ 7
155
+ 1
156
+ 64
157
+ 49
158
+ 2
159
+ 2
160
+ 15
161
+ 65
162
+ 7
163
+ 3
164
+ 7
165
+ 4
166
+ 64
167
+ 49
168
+ 2
169
+ 2
170
+ 15
171
+ 99
172
+ 7
173
+ 5
174
+ 7
175
+ 6
176
+ 65
177
+ 67
178
+ 49
179
+ 7
180
+ 0
181
+ 49
182
+ 8
183
+ 4
184
+ 15
185
+ 99
186
+ 7
187
+ 9
188
+ 7
189
+ 10
190
+ 65
191
+ 67
192
+ 49
193
+ 7
194
+ 0
195
+ 49
196
+ 8
197
+ 4
198
+ 15
199
+ 5
200
+ 48
201
+ 11
202
+ 15
203
+ 99
204
+ 7
205
+ 12
206
+ 7
207
+ 13
208
+ 65
209
+ 67
210
+ 49
211
+ 7
212
+ 0
213
+ 49
214
+ 8
215
+ 4
216
+ 11
217
+ I
218
+ 5
219
+ I
220
+ 0
221
+ I
222
+ 0
223
+ I
224
+ 0
225
+ n
226
+ p
227
+ 14
228
+ x
229
+ 11
230
+ API_VERSION
231
+ s
232
+ 10
233
+ 2010-11-01
234
+ x
235
+ 9
236
+ const_set
237
+ x
238
+ 7
239
+ SERVICE
240
+ s
241
+ 19
242
+ AWSECommerceService
243
+ x
244
+ 10
245
+ initialize
246
+ M
247
+ 1
248
+ n
249
+ n
250
+ x
251
+ 10
252
+ initialize
253
+ i
254
+ 33
255
+ 5
256
+ 7
257
+ 0
258
+ 64
259
+ 45
260
+ 1
261
+ 2
262
+ 49
263
+ 3
264
+ 2
265
+ 15
266
+ 5
267
+ 7
268
+ 4
269
+ 64
270
+ 45
271
+ 5
272
+ 6
273
+ 49
274
+ 3
275
+ 2
276
+ 15
277
+ 5
278
+ 7
279
+ 7
280
+ 64
281
+ 5
282
+ 48
283
+ 8
284
+ 49
285
+ 3
286
+ 2
287
+ 11
288
+ I
289
+ 3
290
+ I
291
+ 0
292
+ I
293
+ 0
294
+ I
295
+ 0
296
+ n
297
+ p
298
+ 9
299
+ s
300
+ 7
301
+ Service
302
+ x
303
+ 7
304
+ SERVICE
305
+ n
306
+ x
307
+ 5
308
+ store
309
+ s
310
+ 7
311
+ Version
312
+ x
313
+ 11
314
+ API_VERSION
315
+ n
316
+ s
317
+ 9
318
+ Timestamp
319
+ x
320
+ 9
321
+ timestamp
322
+ p
323
+ 9
324
+ I
325
+ -1
326
+ I
327
+ b
328
+ I
329
+ 0
330
+ I
331
+ c
332
+ I
333
+ b
334
+ I
335
+ d
336
+ I
337
+ 16
338
+ I
339
+ e
340
+ I
341
+ 21
342
+ x
343
+ 55
344
+ /Users/hakanensari/code/sucker/lib/sucker/parameters.rb
345
+ p
346
+ 0
347
+ x
348
+ 17
349
+ method_visibility
350
+ x
351
+ 15
352
+ add_defn_method
353
+ x
354
+ 9
355
+ normalize
356
+ M
357
+ 1
358
+ n
359
+ n
360
+ x
361
+ 9
362
+ normalize
363
+ i
364
+ 15
365
+ 5
366
+ 44
367
+ 43
368
+ 0
369
+ 78
370
+ 49
371
+ 1
372
+ 1
373
+ 56
374
+ 2
375
+ 47
376
+ 50
377
+ 3
378
+ 1
379
+ 11
380
+ I
381
+ 3
382
+ I
383
+ 0
384
+ I
385
+ 0
386
+ I
387
+ 0
388
+ n
389
+ p
390
+ 4
391
+ x
392
+ 4
393
+ Hash
394
+ x
395
+ 16
396
+ new_from_literal
397
+ M
398
+ 1
399
+ p
400
+ 2
401
+ x
402
+ 9
403
+ for_block
404
+ t
405
+ n
406
+ x
407
+ 9
408
+ normalize
409
+ i
410
+ 75
411
+ 58
412
+ 37
413
+ 19
414
+ 0
415
+ 15
416
+ 37
417
+ 19
418
+ 1
419
+ 15
420
+ 15
421
+ 20
422
+ 1
423
+ 97
424
+ 37
425
+ 19
426
+ 2
427
+ 15
428
+ 37
429
+ 19
430
+ 3
431
+ 15
432
+ 15
433
+ 2
434
+ 15
435
+ 20
436
+ 3
437
+ 45
438
+ 0
439
+ 1
440
+ 49
441
+ 2
442
+ 1
443
+ 9
444
+ 44
445
+ 20
446
+ 3
447
+ 7
448
+ 3
449
+ 64
450
+ 49
451
+ 4
452
+ 1
453
+ 8
454
+ 49
455
+ 20
456
+ 3
457
+ 49
458
+ 5
459
+ 0
460
+ 19
461
+ 3
462
+ 15
463
+ 20
464
+ 0
465
+ 20
466
+ 2
467
+ 49
468
+ 5
469
+ 0
470
+ 49
471
+ 6
472
+ 0
473
+ 20
474
+ 3
475
+ 13
476
+ 18
477
+ 3
478
+ 49
479
+ 7
480
+ 2
481
+ 15
482
+ 15
483
+ 20
484
+ 0
485
+ 11
486
+ I
487
+ 9
488
+ I
489
+ 4
490
+ I
491
+ 2
492
+ I
493
+ 2
494
+ n
495
+ p
496
+ 8
497
+ x
498
+ 5
499
+ Array
500
+ n
501
+ x
502
+ 5
503
+ is_a?
504
+ s
505
+ 1
506
+ ,
507
+ x
508
+ 4
509
+ join
510
+ x
511
+ 4
512
+ to_s
513
+ x
514
+ 8
515
+ camelize
516
+ x
517
+ 3
518
+ []=
519
+ p
520
+ 11
521
+ I
522
+ 0
523
+ I
524
+ 12
525
+ I
526
+ a
527
+ I
528
+ 13
529
+ I
530
+ 18
531
+ I
532
+ 14
533
+ I
534
+ 34
535
+ I
536
+ 15
537
+ I
538
+ 48
539
+ I
540
+ 16
541
+ I
542
+ 4b
543
+ x
544
+ 55
545
+ /Users/hakanensari/code/sucker/lib/sucker/parameters.rb
546
+ p
547
+ 4
548
+ x
549
+ 4
550
+ hash
551
+ x
552
+ 2
553
+ kv
554
+ x
555
+ 1
556
+ k
557
+ x
558
+ 1
559
+ v
560
+ x
561
+ 6
562
+ inject
563
+ p
564
+ 5
565
+ I
566
+ -1
567
+ I
568
+ 11
569
+ I
570
+ 0
571
+ I
572
+ 12
573
+ I
574
+ f
575
+ x
576
+ 55
577
+ /Users/hakanensari/code/sucker/lib/sucker/parameters.rb
578
+ p
579
+ 0
580
+ x
581
+ 7
582
+ private
583
+ x
584
+ 9
585
+ timestamp
586
+ M
587
+ 1
588
+ n
589
+ n
590
+ x
591
+ 9
592
+ timestamp
593
+ i
594
+ 16
595
+ 45
596
+ 0
597
+ 1
598
+ 49
599
+ 2
600
+ 0
601
+ 49
602
+ 3
603
+ 0
604
+ 7
605
+ 4
606
+ 64
607
+ 49
608
+ 5
609
+ 1
610
+ 11
611
+ I
612
+ 2
613
+ I
614
+ 0
615
+ I
616
+ 0
617
+ I
618
+ 0
619
+ n
620
+ p
621
+ 6
622
+ x
623
+ 4
624
+ Time
625
+ n
626
+ x
627
+ 3
628
+ now
629
+ x
630
+ 3
631
+ utc
632
+ s
633
+ 18
634
+ %Y-%m-%dT%H:%M:%SZ
635
+ x
636
+ 8
637
+ strftime
638
+ p
639
+ 5
640
+ I
641
+ -1
642
+ I
643
+ 1c
644
+ I
645
+ 0
646
+ I
647
+ 1d
648
+ I
649
+ 10
650
+ x
651
+ 55
652
+ /Users/hakanensari/code/sucker/lib/sucker/parameters.rb
653
+ p
654
+ 0
655
+ p
656
+ 13
657
+ I
658
+ 2
659
+ I
660
+ 8
661
+ I
662
+ c
663
+ I
664
+ 9
665
+ I
666
+ 16
667
+ I
668
+ b
669
+ I
670
+ 24
671
+ I
672
+ 11
673
+ I
674
+ 32
675
+ I
676
+ 1a
677
+ I
678
+ 36
679
+ I
680
+ 1c
681
+ I
682
+ 44
683
+ x
684
+ 55
685
+ /Users/hakanensari/code/sucker/lib/sucker/parameters.rb
686
+ p
687
+ 0
688
+ x
689
+ 13
690
+ attach_method
691
+ p
692
+ 3
693
+ I
694
+ 2
695
+ I
696
+ 7
697
+ I
698
+ 1f
699
+ x
700
+ 55
701
+ /Users/hakanensari/code/sucker/lib/sucker/parameters.rb
702
+ p
703
+ 0
704
+ x
705
+ 13
706
+ attach_method
707
+ p
708
+ 5
709
+ I
710
+ 0
711
+ I
712
+ 3
713
+ I
714
+ 9
715
+ I
716
+ 5
717
+ I
718
+ 25
719
+ x
720
+ 55
721
+ /Users/hakanensari/code/sucker/lib/sucker/parameters.rb
722
+ p
723
+ 0