lotus-utils 0.3.3 → 0.3.4
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/CHANGELOG.md +8 -0
- data/LICENSE.md +1 -1
- data/README.md +1 -1
- data/lib/lotus/utils/attributes.rb +11 -0
- data/lib/lotus/utils/callbacks.rb +70 -10
- data/lib/lotus/utils/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 339681343526eb287d81d4f52ca29bda0550d8e7
|
4
|
+
data.tar.gz: 3e22d02c21a013f03cb1789e307e59054ba37ff1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: da44a5d936f554ae76be3c7c8195bd416268c5c0f81898df0c4959cc4aee3ab38180fa995943fac286ff464ebed477fb07307562330b0d086162b22fc4dbb41d
|
7
|
+
data.tar.gz: 6e835299ce217838cd487070b1ade2a5b7c8916af0eef233e76716257f99b258360faba93ca4ac8c29c84efc6dbccaf46db99d35b81891e00c76f92b39d62fc5
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,14 @@
|
|
1
1
|
# Lotus::Utils
|
2
2
|
Ruby core extentions and class utilities for Lotus
|
3
3
|
|
4
|
+
## v0.3.4 - 2015-01-30
|
5
|
+
### Added
|
6
|
+
- [Alfonso Uceda Pompa] Aliased `Lotus::Utils::Attributes#get` with `#[]`
|
7
|
+
- [Simone Carletti] Introduced `Lotus::Utils::Callbacks::Chain#prepend` and `#append`
|
8
|
+
|
9
|
+
### Deprecated
|
10
|
+
- [Luca Guidi] Deprecated `Lotus::Utils::Callbacks::Chain#add` in favor of `#append`
|
11
|
+
|
4
12
|
## v0.3.3 - 2015-01-08
|
5
13
|
### Fixed
|
6
14
|
- [Luca Guidi] Ensure to return the right offending object if a missing method is called with Utils::String and Hash (eg. `Utils::Hash.new(a: 1).all? {|_, v| v.foo }` blame `v` instead of `Hash`)
|
data/LICENSE.md
CHANGED
data/README.md
CHANGED
@@ -48,19 +48,30 @@ module Lotus
|
|
48
48
|
#
|
49
49
|
# attributes.get(:a) # => 1
|
50
50
|
# attributes.get('a') # => 1
|
51
|
+
# attributes[:a] # => 1
|
52
|
+
# attributes['a'] # => 1
|
51
53
|
#
|
52
54
|
# attributes.get(:b) # => 2
|
53
55
|
# attributes.get('b') # => 2
|
56
|
+
# attributes[:b] # => 2
|
57
|
+
# attributes['b'] # => 2
|
54
58
|
#
|
55
59
|
# attributes.get(23) # => "foo"
|
56
60
|
# attributes.get('23') # => "foo"
|
61
|
+
# attributes[23] # => "foo"
|
62
|
+
# attributes[23] # => "foo"
|
57
63
|
#
|
58
64
|
# attributes.get(:unknown) # => nil
|
59
65
|
# attributes.get('unknown') # => nil
|
66
|
+
# attributes[:unknown] # => nil
|
67
|
+
# attributes['unknown'] # => nil
|
60
68
|
def get(attribute)
|
61
69
|
@attributes[attribute.to_s]
|
62
70
|
end
|
63
71
|
|
72
|
+
# @since 0.3.4
|
73
|
+
alias_method :[], :get
|
74
|
+
|
64
75
|
# Set the given value for the given attribute
|
65
76
|
#
|
66
77
|
# @param attribute [#to_s] a String or any object that implements #to_s
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'lotus/utils/deprecation'
|
2
|
+
|
1
3
|
module Lotus
|
2
4
|
module Utils
|
3
5
|
# Before and After callbacks
|
@@ -19,21 +21,71 @@ module Lotus
|
|
19
21
|
@chain = Array.new
|
20
22
|
end
|
21
23
|
|
22
|
-
#
|
24
|
+
# Appends the given callbacks to the end of the chain.
|
23
25
|
#
|
24
|
-
# @param callbacks [Array] one or multiple callbacks to
|
25
|
-
# @param
|
26
|
+
# @param callbacks [Array] one or multiple callbacks to append
|
27
|
+
# @param block [Proc] an optional block to be appended
|
26
28
|
#
|
27
29
|
# @return [void]
|
28
30
|
#
|
29
31
|
# @raise [RuntimeError] if the object was previously frozen
|
30
32
|
#
|
33
|
+
# @see #prepend
|
31
34
|
# @see #run
|
32
35
|
# @see Lotus::Utils::Callbacks::Callback
|
33
36
|
# @see Lotus::Utils::Callbacks::MethodCallback
|
34
37
|
# @see Lotus::Utils::Callbacks::Chain#freeze
|
35
38
|
#
|
39
|
+
# @since 0.3.4
|
40
|
+
#
|
41
|
+
# @example
|
42
|
+
# require 'lotus/utils/callbacks'
|
43
|
+
#
|
44
|
+
# chain = Lotus::Utils::Callbacks::Chain.new
|
45
|
+
#
|
46
|
+
# # Append a Proc to be used as a callback, it will be wrapped by `Callback`
|
47
|
+
# # The optional argument(s) correspond to the one passed when invoked the chain with `run`.
|
48
|
+
# chain.append { Authenticator.authenticate! }
|
49
|
+
# chain.append { |params| ArticleRepository.find(params[:id]) }
|
50
|
+
#
|
51
|
+
# # Append a Symbol as a reference to a method name that will be used as a callback.
|
52
|
+
# # It will wrapped by `MethodCallback`
|
53
|
+
# # If the #notificate method accepts some argument(s) they should be passed when `run` is invoked.
|
54
|
+
# chain.append :notificate
|
55
|
+
def append(*callbacks, &block)
|
56
|
+
callables(callbacks, block).each do |c|
|
57
|
+
@chain.push(c)
|
58
|
+
end
|
59
|
+
|
60
|
+
@chain.uniq!
|
61
|
+
end
|
62
|
+
|
36
63
|
# @since 0.1.0
|
64
|
+
# @deprecated Use Lotus::Utils::Callbacks::Chain#append as it has the
|
65
|
+
# same effect, but it's more consistent with the new API.
|
66
|
+
#
|
67
|
+
# @see Lotus::Utils::Callbacks::Chain#append
|
68
|
+
def add(*callbacks, &blk)
|
69
|
+
Utils::Deprecation.new("Lotus::Utils::Callbacks::Chain#add is deprecated, use #append instead.")
|
70
|
+
append(*callbacks, &blk)
|
71
|
+
end
|
72
|
+
|
73
|
+
# Prepends the given callbacks to the beginning of the chain.
|
74
|
+
#
|
75
|
+
# @param callbacks [Array] one or multiple callbacks to add
|
76
|
+
# @param block [Proc] an optional block to be added
|
77
|
+
#
|
78
|
+
# @return [void]
|
79
|
+
#
|
80
|
+
# @raise [RuntimeError] if the object was previously frozen
|
81
|
+
#
|
82
|
+
# @see #append
|
83
|
+
# @see #run
|
84
|
+
# @see Lotus::Utils::Callbacks::Callback
|
85
|
+
# @see Lotus::Utils::Callbacks::MethodCallback
|
86
|
+
# @see Lotus::Utils::Callbacks::Chain#freeze
|
87
|
+
#
|
88
|
+
# @since 0.3.4
|
37
89
|
#
|
38
90
|
# @example
|
39
91
|
# require 'lotus/utils/callbacks'
|
@@ -42,17 +94,16 @@ module Lotus
|
|
42
94
|
#
|
43
95
|
# # Add a Proc to be used as a callback, it will be wrapped by `Callback`
|
44
96
|
# # The optional argument(s) correspond to the one passed when invoked the chain with `run`.
|
45
|
-
# chain.
|
46
|
-
# chain.
|
97
|
+
# chain.prepend { Authenticator.authenticate! }
|
98
|
+
# chain.prepend { |params| ArticleRepository.find(params[:id]) }
|
47
99
|
#
|
48
100
|
# # Add a Symbol as a reference to a method name that will be used as a callback.
|
49
101
|
# # It will wrapped by `MethodCallback`
|
50
102
|
# # If the #notificate method accepts some argument(s) they should be passed when `run` is invoked.
|
51
|
-
# chain.
|
52
|
-
def
|
53
|
-
callbacks.
|
54
|
-
|
55
|
-
@chain.push Factory.fabricate(c)
|
103
|
+
# chain.prepend :notificate
|
104
|
+
def prepend(*callbacks, &block)
|
105
|
+
callables(callbacks, block).each do |c|
|
106
|
+
@chain.unshift(c)
|
56
107
|
end
|
57
108
|
|
58
109
|
@chain.uniq!
|
@@ -128,6 +179,15 @@ module Lotus
|
|
128
179
|
super
|
129
180
|
@chain.freeze
|
130
181
|
end
|
182
|
+
|
183
|
+
|
184
|
+
private
|
185
|
+
|
186
|
+
def callables(callbacks, block)
|
187
|
+
callbacks.push(block) if block
|
188
|
+
callbacks.map { |c| Factory.fabricate(c) }
|
189
|
+
end
|
190
|
+
|
131
191
|
end
|
132
192
|
|
133
193
|
# Callback factory
|
data/lib/lotus/utils/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lotus-utils
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Luca Guidi
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-01-
|
12
|
+
date: 2015-01-30 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|