named-parameters 0.0.13 → 0.0.14
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.
- data/README.md +59 -1
- data/RELEASENOTES +14 -1
- data/VERSION +1 -1
- data/lib/named-parameters/module.rb +9 -2
- data/named-parameters.gemspec +2 -2
- metadata +4 -4
data/README.md
CHANGED
@@ -158,12 +158,70 @@ method:
|
|
158
158
|
end
|
159
159
|
|
160
160
|
# create an instance of GoogleStorage
|
161
|
-
# and print: [ access-key, secret-key, group-email, apps-domain ]
|
161
|
+
# and print: [ :access-key, :secret-key, :group-email, :apps-domain ]
|
162
162
|
GoogleStorage.new :'access-key' => '...', :'secret-key' => '...'
|
163
163
|
|
164
164
|
`declared_parameters` is also available from the class methods of user defined
|
165
165
|
classes.
|
166
166
|
|
167
|
+
You can also pass a list of parameter types to limit the result to specific
|
168
|
+
parameter types:
|
169
|
+
|
170
|
+
class GoogleStorage
|
171
|
+
requires :'access-key', :'secret-key'
|
172
|
+
recognizes [ :'group-email', 'group@example.org' ], [ :'apps-domain', 'example.org' ]
|
173
|
+
|
174
|
+
def initialize options
|
175
|
+
# list the parameters declared
|
176
|
+
puts "#{declared_parameters(:required).join(' ')}"
|
177
|
+
|
178
|
+
# ... now do the googly stuff ...
|
179
|
+
end
|
180
|
+
end
|
181
|
+
|
182
|
+
# create an instance of GoogleStorage
|
183
|
+
# and print: [ :access-key, :secret-key ]
|
184
|
+
GoogleStorage.new :'access-key' => '...', :'secret-key' => '...'
|
185
|
+
|
186
|
+
The method `declared_parameters` is context specific. It returns the list of
|
187
|
+
parameters for the current method. To get a list of parameters for a specific
|
188
|
+
method, use `declared_parameters_for`:
|
189
|
+
|
190
|
+
class GoogleStorage
|
191
|
+
requires :'access-key', :'secret-key'
|
192
|
+
recognizes [ :'group-email', 'group@example.org' ], [ :'apps-domain', 'example.org' ]
|
193
|
+
|
194
|
+
def initialize options
|
195
|
+
# list the parameters declared
|
196
|
+
puts "#{declared_parameters(:required).join(' ')}"
|
197
|
+
|
198
|
+
# ... now do the googly stuff ...
|
199
|
+
end
|
200
|
+
|
201
|
+
def self.required_parameters
|
202
|
+
declared_parameters_for :new, :required
|
203
|
+
end
|
204
|
+
|
205
|
+
def self.optional_parameters
|
206
|
+
declared_parameters_for :new, :optional
|
207
|
+
end
|
208
|
+
|
209
|
+
def self.all_parameters
|
210
|
+
declared_parameters_for :new
|
211
|
+
end
|
212
|
+
end
|
213
|
+
|
214
|
+
# list the required parameters for the class
|
215
|
+
GoogleStorage.required_parameters # => [ :access-key, :secret-key ]
|
216
|
+
|
217
|
+
# list the optional parameters for the class
|
218
|
+
GoogleStorage.required_parameters # => [ :group-email, :apps-domain ]
|
219
|
+
|
220
|
+
# list all of the recognized parameters for the class
|
221
|
+
GoogleStorage.all_parameters # => [ :access-key, :secret-key, :group-email, :apps-domain ]
|
222
|
+
|
223
|
+
Notice that both methods may receive a filter of parameter types.
|
224
|
+
|
167
225
|
Filtering Arguments
|
168
226
|
-------------------
|
169
227
|
Sometimes you'll have a `Hash` object that will have a bunch of keys that may
|
data/RELEASENOTES
CHANGED
@@ -1,3 +1,16 @@
|
|
1
|
+
0.0.14 [Nov 29, 2010]
|
2
|
+
- [FEATURE] Added declared_parameters_for method.
|
3
|
+
- [FEATURE] You can now limit/filter the list of declared parameters based on
|
4
|
+
type:
|
5
|
+
|
6
|
+
has_named_parameters :foobar,
|
7
|
+
:required => :a, :optional => [ :b, :c ]
|
8
|
+
def foobar
|
9
|
+
declared_parameters(:required).inspect
|
10
|
+
end
|
11
|
+
|
12
|
+
foobar # => [ :a ]
|
13
|
+
|
1
14
|
0.0.13 [Nov 28, 2010]
|
2
15
|
- [INTERNAL] instrument -> apply_method_spec, to make it compatible with Rails.
|
3
16
|
|
@@ -18,7 +31,7 @@
|
|
18
31
|
declared_parameters.inspect
|
19
32
|
end
|
20
33
|
|
21
|
-
foobar
|
34
|
+
foobar # => [ :a, :b, :c ]
|
22
35
|
|
23
36
|
- [INTERNAL] Parameter spec table is now retained.
|
24
37
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.14
|
@@ -33,10 +33,13 @@ module NamedParameters
|
|
33
33
|
# declared in the the `has_named_parameters` clause, or the list specified
|
34
34
|
# in either the `requires` and `recognizes` clause.
|
35
35
|
#
|
36
|
+
# @param [Array<Symbol>] type limits the list of parameters returned to the
|
37
|
+
# parameter types specified. Defaults to `[ :required, :optional, :oneof ]`
|
38
|
+
#
|
36
39
|
# @return [Array<Symbol>] the list of symbols representing the name of the declared
|
37
40
|
# parameters.
|
38
41
|
#
|
39
|
-
def declared_parameters
|
42
|
+
def declared_parameters type = [ :required, :optional, :oneof ]
|
40
43
|
klazz = self.instance_of?(Class) ? self : self.class
|
41
44
|
specs = klazz.send :specs
|
42
45
|
|
@@ -48,7 +51,11 @@ module NamedParameters
|
|
48
51
|
mapper = lambda{ |entry| entry.instance_of?(Hash) ? entry.keys.first : entry }
|
49
52
|
sorter = lambda{ |x, y| x.to_s <=> y.to_s }
|
50
53
|
|
51
|
-
|
54
|
+
Array(type).map{ |k| spec[k].map(&mapper) }.flatten.sort(&sorter)
|
55
|
+
end
|
56
|
+
|
57
|
+
def declared_parameters_for method, type = [ :required, :optional, :oneof ]
|
58
|
+
declared_parameters(type) { method }
|
52
59
|
end
|
53
60
|
|
54
61
|
# Filter out keys from `options` that are not declared as parameter to the
|
data/named-parameters.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{named-parameters}
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.14"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Juris Galang"]
|
12
|
-
s.date = %q{2010-11-
|
12
|
+
s.date = %q{2010-11-29}
|
13
13
|
s.description = %q{This gem simulates named-parameters in Ruby.
|
14
14
|
It's a complement to the common Ruby idiom of using Hash args to emulate
|
15
15
|
the use of named parameters. }
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: named-parameters
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 3
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 14
|
10
|
+
version: 0.0.14
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Juris Galang
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-11-
|
18
|
+
date: 2010-11-29 00:00:00 -08:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|