enum_args 1.1.1 → 1.1.2
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.
- checksums.yaml +4 -4
- data/LICENSE.txt +1 -0
- data/README.md +38 -11
- data/lib/enum_args/enumerator.rb +9 -7
- data/lib/enum_args/proxy.rb +4 -4
- data/lib/enum_args/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 68df5fb718558589a21017b5855a79dbf5ac7a7d
|
4
|
+
data.tar.gz: eca79a772cb5d8e2acd15e3043d10bb3329ac371
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ed587f106c77f0c9d4d1c05ded01163f8ab4f460d970c3cf2e32d112d1d78d0fddb8909b504927ca1e9f74be09316efeb55cb0b7fd856a413f3f66b02b577cf5
|
7
|
+
data.tar.gz: f2169665ffff932f9b15d0361b394f8298208568feb35fb0b6d97b4dc1670ebeaedfe3216b539ab1d6c299be0518ac2759c73b97be6adc9324895914b1dd84fc
|
data/LICENSE.txt
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
The MIT License (MIT)
|
2
2
|
|
3
3
|
Copyright (c) 2015 Alejandro Martinez Ruiz <alex at flawedcode . org>
|
4
|
+
Copyright (c) 2015 3scale, Inc.
|
4
5
|
|
5
6
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
7
|
of this software and associated documentation files (the "Software"), to deal
|
data/README.md
CHANGED
@@ -1,24 +1,51 @@
|
|
1
|
-
[](http://badge.fury.io/rb/enum_args) [](https://travis-ci.org/unleashed/enum_args) [](https://codeclimate.com/github/unleashed/enum_args) [](https://codeclimate.com/github/unleashed/enum_args)
|
1
|
+
[](http://badge.fury.io/rb/enum_args) [](https://travis-ci.org/unleashed/enum_args) [](https://codeclimate.com/github/unleashed/enum_args) [](https://codeclimate.com/github/unleashed/enum_args) [](https://gemnasium.com/unleashed/enum_args) [](LICENSE.txt)
|
2
2
|
|
3
3
|
# EnumArgs
|
4
4
|
|
5
|
-
EnumArgs is a
|
6
|
-
|
5
|
+
EnumArgs is a gem that enables your enumerators to receive parameters from any
|
6
|
+
of of the methods provided by Enumerable in a uniform fashion, so that you
|
7
7
|
could, ie. `ai_team.select(max_cpu: 80) { |troop| troop.can_hit?(enemy) }.each
|
8
8
|
{ ... }`.
|
9
9
|
|
10
|
-
|
10
|
+
## Basic Usage
|
11
|
+
|
12
|
+
You just need to include EnumArgs to your class and call `enum_args_for`.
|
13
|
+
|
14
|
+
```ruby
|
15
|
+
class MyEnum
|
16
|
+
include EnumArgs
|
17
|
+
|
18
|
+
enum_args_for :my_iterator, 3, 'fixed', 'params', using: { dynamic: :params }
|
19
|
+
|
20
|
+
def my_iterator(how_many, string1, string2, dynamic:)
|
21
|
+
# do something with all params, including dynamic ones
|
22
|
+
# which are always keyword parameters
|
23
|
+
yield element1
|
24
|
+
yield element2
|
25
|
+
# [...]
|
26
|
+
end
|
27
|
+
end
|
28
|
+
```
|
29
|
+
|
30
|
+
**N.B**: You *should avoid* using `each` as the method name for your iterator. Doing
|
31
|
+
so will prevent your iterator from consistently getting the correct parameters.
|
32
|
+
|
33
|
+
See Usage for additional information.
|
11
34
|
|
12
35
|
### Namespace pollution
|
13
36
|
|
14
|
-
A common issue with this sort of gems is namespace pollution. EnumArgs
|
15
|
-
|
37
|
+
A common issue with this sort of gems is namespace pollution. EnumArgs works
|
38
|
+
hard to use just the bare minimum needed methods.
|
16
39
|
|
17
|
-
|
40
|
+
EnumArgs adds all the Enumerable instance methods and a corresponding `each`
|
41
|
+
method, which is what we need for a collection, and other than that, just _one_
|
18
42
|
single accessor (instance) method to your class and _one_ single instance variable
|
19
|
-
with configurable name (default is `enum_args`).
|
20
|
-
|
21
|
-
`
|
43
|
+
with configurable name (default is `enum_args`). You can specify what that name
|
44
|
+
should look like by specifying the `with_enum_args_as: :method_name` option to
|
45
|
+
`enum_args_for`.
|
46
|
+
|
47
|
+
A few _class_ methods are added as well to hold default values for your
|
48
|
+
enumerator, all of them prefixed with `enum_args_`.
|
22
49
|
|
23
50
|
## Installation
|
24
51
|
|
@@ -193,4 +220,4 @@ Bug reports and pull requests are welcome on GitHub at https://github.com/unleas
|
|
193
220
|
## License
|
194
221
|
|
195
222
|
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
196
|
-
|
223
|
+
See [LICENSE.txt](LICENSE.txt) for details.
|
data/lib/enum_args/enumerator.rb
CHANGED
@@ -12,13 +12,13 @@ module EnumArgs
|
|
12
12
|
@args
|
13
13
|
end
|
14
14
|
|
15
|
-
#
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
#
|
15
|
+
# Currently unused setter
|
16
|
+
#
|
17
|
+
# def using=(using)
|
18
|
+
# @using = using
|
19
|
+
# self.args = args
|
20
|
+
# @using
|
21
|
+
# end
|
22
22
|
|
23
23
|
def initialize(object, method_name, *fixed_args, using: {})
|
24
24
|
@object = object
|
@@ -40,7 +40,9 @@ module EnumArgs
|
|
40
40
|
def rewind
|
41
41
|
self.fiber = Fiber.new do
|
42
42
|
object.send method_name, *args do |*yielded_values|
|
43
|
+
# :nocov:
|
43
44
|
Fiber.yield(*yielded_values)
|
45
|
+
# :nocov:
|
44
46
|
end
|
45
47
|
raise StopIteration
|
46
48
|
end
|
data/lib/enum_args/proxy.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module EnumArgs
|
2
2
|
class Proxy
|
3
|
-
ProxiedEnumerable.on_enumerable_methods self do |*args, &blk|
|
4
|
-
enum_delegate __method__,
|
3
|
+
ProxiedEnumerable.on_enumerable_methods self do |*args, **options, &blk|
|
4
|
+
enum_delegate __method__, args, options, blk
|
5
5
|
end
|
6
6
|
|
7
7
|
def self.attr_writer_resetting_enum(*writers)
|
@@ -30,7 +30,7 @@ module EnumArgs
|
|
30
30
|
|
31
31
|
attr_writer :enum
|
32
32
|
|
33
|
-
def enum_delegate(m,
|
33
|
+
def enum_delegate(m, m_args, options, blk)
|
34
34
|
# remove specific 'using' options from method call
|
35
35
|
iterator_params = extract_iterator_params_from options
|
36
36
|
|
@@ -58,7 +58,7 @@ module EnumArgs
|
|
58
58
|
end
|
59
59
|
|
60
60
|
def build_enum(merge = {})
|
61
|
-
|
61
|
+
Enumerator.new(object, method_name, *args, using: self.using.merge(merge))
|
62
62
|
end
|
63
63
|
end
|
64
64
|
end
|
data/lib/enum_args/version.rb
CHANGED