methlab 0.0.7 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. data/README +9 -0
  2. data/lib/methlab.rb +28 -8
  3. metadata +3 -3
data/README CHANGED
@@ -55,6 +55,13 @@ So, let's do something like this:
55
55
  def_named(:bar, :foo => String, :bar => [Integer, :required]) do |params|
56
56
  puts "I received #{params[:foo]} as a String and #{params[:bar]} as an Integer!"
57
57
  end
58
+
59
+ def some_method(*args) # a hash
60
+ params = MethLab.validate_params(:foo => String, :bar => [Integer, :required])
61
+ raise params if params.kind_of? Exception
62
+
63
+ puts "I received #{params[:foo]} as a String and #{params[:bar]} as an Integer!"
64
+ end
58
65
  end
59
66
 
60
67
  Which yields these opportunities:
@@ -69,6 +76,8 @@ Which yields these opportunities:
69
76
  a.bar(:bar => 1) # prints message, with nil string
70
77
  a.bar(:foo => "str", :bar => 1) # prints message
71
78
 
79
+ a.some_method(:foo => "str", :bar => 1) # prints message
80
+
72
81
  See the MethLab module documentation for details.
73
82
 
74
83
  === FAQ
@@ -24,6 +24,13 @@
24
24
  # def_named(:bar, :foo => String, :bar => [Integer, :required]) do |params|
25
25
  # puts "I received #{params[:foo]} as a String and #{params[:bar]} as an Integer!"
26
26
  # end
27
+ #
28
+ # def some_method(*args) # a hash
29
+ # params = MethLab.validate_params(:foo => String, :bar => [Integer, :required])
30
+ # raise params if params.kind_of? Exception
31
+ #
32
+ # puts "I received #{params[:foo]} as a String and #{params[:bar]} as an Integer!"
33
+ # end
27
34
  # end
28
35
  #
29
36
  # Which yields these opportunities:
@@ -38,6 +45,8 @@
38
45
  # a.bar(:bar => 1) # prints message, with nil string
39
46
  # a.bar(:foo => "str", :bar => 1) # prints message
40
47
  #
48
+ # a.some_method(:foo => "str", :bar => 1) # prints message
49
+ #
41
50
  # Using it is quite simple. Just remember a few things:
42
51
  #
43
52
  # * A class will always be compared with Object#kind_of? against the object.
@@ -59,7 +68,7 @@
59
68
  #
60
69
  module MethLab
61
70
 
62
- VERSION = "0.0.7"
71
+ VERSION = "0.0.8"
63
72
 
64
73
  # Integrates MethLab into all namespaces. It does this by patching itself
65
74
  # into ::main and Module.
@@ -158,10 +167,18 @@ module MethLab
158
167
  return nil
159
168
  end
160
169
 
161
- # internal, do not use directly.
170
+ # This method takes the same signature as Methlab#build_ordered, and the
171
+ # arguments you wish to validate. It will process everything just like you
172
+ # built a method to handle this, but just with the arguments you prefer.
162
173
  #
163
- # used to check the arity of array (ordered) method calls.
174
+ # This method will return either an Exception or an Array; if you receive
175
+ # an exception, this means that parsing errors occured, you may raise this
176
+ # exception from the point of your method if you wish.
164
177
  def self.validate_array_params(signature, args)
178
+ args = [] unless args
179
+
180
+ MethLab.set_defaults(signature, args, :array)
181
+
165
182
  unless args.kind_of?(Array)
166
183
  return ArgumentError.new("this method takes ordered arguments")
167
184
  end
@@ -190,10 +207,16 @@ module MethLab
190
207
  return args
191
208
  end
192
209
 
193
- # internal, do not use directly.
210
+ # This method takes the same signature as Methlab#build_named, and the
211
+ # arguments you wish to validate. It will process everything just like you
212
+ # built a method to handle this, but just with the arguments you prefer.
194
213
  #
195
- # Used to check the sanity of parameterized (named) method calls.
214
+ # This method will return either an Exception or an Array; if you receive
215
+ # an exception, this means that parsing errors occured, you may raise this
216
+ # exception from the point of your method if you wish.
196
217
  def self.validate_params(signature, *args)
218
+ args = [{}] if args.empty?
219
+ MethLab.set_defaults(signature, args, :hash)
197
220
  args = args[0]
198
221
 
199
222
  unless args.kind_of?(Hash)
@@ -247,7 +270,6 @@ module MethLab
247
270
  end
248
271
 
249
272
  proc do |*args|
250
- MethLab.set_defaults(signature, args, :array)
251
273
  params = MethLab.validate_array_params(signature, args)
252
274
  raise params if params.kind_of?(Exception)
253
275
  block.call(params)
@@ -282,8 +304,6 @@ module MethLab
282
304
  signature = args[0]
283
305
 
284
306
  proc do |*args|
285
- args = [{}] if args.empty?
286
- MethLab.set_defaults(signature, args, :hash)
287
307
  params = MethLab.validate_params(signature, *args)
288
308
  raise params if params.kind_of?(Exception)
289
309
  block.call(params)
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 7
9
- version: 0.0.7
8
+ - 8
9
+ version: 0.0.8
10
10
  platform: ruby
11
11
  authors:
12
12
  - Erik Hollensbe
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-05-11 00:00:00 -04:00
17
+ date: 2010-05-13 00:00:00 -04:00
18
18
  default_executable:
19
19
  dependencies: []
20
20