lazy_load 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +9 -0
- data/README.md +1 -1
- data/lib/lazy_load.rb +16 -2
- data/test/lazy_load_test.rb +7 -0
- metadata +3 -3
data/CHANGELOG
CHANGED
data/README.md
CHANGED
@@ -56,7 +56,7 @@ Notice how, when a block is used, it must return the constant. The help message
|
|
56
56
|
|
57
57
|
### Errors
|
58
58
|
|
59
|
-
Referencing constant beneath `LazyLoad` for which there is no mapping
|
59
|
+
Referencing a constant beneath `LazyLoad` for which there is no mapping resuslts in the usual `NameError`. Referencing an unavailable constant typically gives a `LazyLoad::DependencyError`, which conveniently is also a subclass of `NameError`.
|
60
60
|
|
61
61
|
|
62
62
|
### Best available
|
data/lib/lazy_load.rb
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
|
4
4
|
module LazyLoad
|
5
5
|
|
6
|
-
VERSION = '0.0.
|
6
|
+
VERSION = '0.0.3'
|
7
7
|
|
8
8
|
class DependencyError < NameError; end
|
9
9
|
|
@@ -12,6 +12,7 @@ module LazyLoad
|
|
12
12
|
def reset!
|
13
13
|
@messages = {}
|
14
14
|
@actions = {}
|
15
|
+
@groups = {}
|
15
16
|
self
|
16
17
|
end
|
17
18
|
|
@@ -27,6 +28,12 @@ module LazyLoad
|
|
27
28
|
ArgumentError, "missing require path or callback")
|
28
29
|
end
|
29
30
|
|
31
|
+
def group(name, *constants)
|
32
|
+
@groups[name] = constants
|
33
|
+
end
|
34
|
+
|
35
|
+
alias :dep :map
|
36
|
+
|
30
37
|
def unmap(name)
|
31
38
|
@messages.delete(name)
|
32
39
|
@actions.delete(name)
|
@@ -56,7 +63,7 @@ module LazyLoad
|
|
56
63
|
# list of constant names.
|
57
64
|
#
|
58
65
|
def best(*names)
|
59
|
-
names.each do |name|
|
66
|
+
expand_groups(names).each do |name|
|
60
67
|
begin
|
61
68
|
return const_get(name)
|
62
69
|
rescue NameError; end
|
@@ -64,6 +71,13 @@ module LazyLoad
|
|
64
71
|
const_get(names.first)
|
65
72
|
end
|
66
73
|
alias :first_available :best
|
74
|
+
alias :[] :best
|
75
|
+
|
76
|
+
def expand_groups(names)
|
77
|
+
names.map do |name|
|
78
|
+
@groups[name] || name
|
79
|
+
end.flatten
|
80
|
+
end
|
67
81
|
|
68
82
|
end
|
69
83
|
|
data/test/lazy_load_test.rb
CHANGED
@@ -12,6 +12,7 @@ class LazyLoadTest < TestCase
|
|
12
12
|
LazyLoad.map(:Unavailable) do
|
13
13
|
raise LazyLoad::DependencyError, 'not available'
|
14
14
|
end
|
15
|
+
LazyLoad.group(:test_grp, :Bogus, :Unavailable, :Message)
|
15
16
|
yield
|
16
17
|
LazyLoad.reset!
|
17
18
|
end
|
@@ -96,6 +97,12 @@ class LazyLoadTest < TestCase
|
|
96
97
|
end
|
97
98
|
end
|
98
99
|
end
|
100
|
+
|
101
|
+
test 'groups' do
|
102
|
+
with_mappings do
|
103
|
+
assert_equal 'love', LazyLoad[:test_grp]
|
104
|
+
end
|
105
|
+
end
|
99
106
|
|
100
107
|
end
|
101
108
|
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: 0.0.
|
8
|
+
- 3
|
9
|
+
version: 0.0.3
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Jostein Berre Eliassen
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2011-06-
|
17
|
+
date: 2011-06-23 00:00:00 +02:00
|
18
18
|
default_executable:
|
19
19
|
dependencies: []
|
20
20
|
|