identitee 0.5.0 → 0.6.0
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/lib/identitee/empty_loader.rb +3 -0
- data/lib/identitee/identifiables.rb +27 -7
- data/lib/identitee/identify.rb +7 -19
- data/lib/identitee/identify_key.rb +7 -0
- data/lib/identitee/loader.rb +10 -4
- data/lib/identitee/version.rb +1 -1
- data/lib/identitee.rb +3 -1
- data/spec/acceptance/default_directory_acceptance_spec.rb +1 -5
- data/spec/acceptance/force_all_loading_acceptance_spec.rb +2 -2
- data/spec/acceptance/lazy_loading_acceptance_spec.rb +1 -5
- data/spec/lib/identitee/identify_key_spec.rb +20 -0
- data/spec/lib/identitee/identify_spec.rb +1 -1
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9da74fd161fc249437c10e388e20164b4276780e
|
4
|
+
data.tar.gz: fd8111133efc9edc77bfa1e7020b41bbf88f8fca
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dbcf9d2ab80514b2f87de44ac15b3fb6d6c7c57fa6667141ff40eb4cc798b33520fbaed4f5325e836973f2af79177019fa42a15cfca8bb9dfc286888589751ff
|
7
|
+
data.tar.gz: fb2518c7ec141523bb9df7337398096791ebc486af444bf48a64fecadb656150375f26a91985a74a5ae360f172a36eeaab244f22a9263ec45fd06767de6ced48
|
@@ -1,9 +1,16 @@
|
|
1
1
|
require 'identitee/identifiable_not_found'
|
2
|
+
require 'identitee/empty_loader'
|
2
3
|
|
3
4
|
module Identitee
|
4
5
|
class Identifiables
|
5
6
|
def initialize
|
6
7
|
@instances = {}
|
8
|
+
@loaders = []
|
9
|
+
@all_loaded = false
|
10
|
+
end
|
11
|
+
|
12
|
+
def add_loader loader
|
13
|
+
loaders << loader
|
7
14
|
end
|
8
15
|
|
9
16
|
def register key, instance
|
@@ -12,12 +19,16 @@ module Identitee
|
|
12
19
|
|
13
20
|
def find key, *default_values, &block
|
14
21
|
instances.fetch key.to_s do
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
22
|
+
lazy_load key
|
23
|
+
|
24
|
+
instances.fetch key.to_s do
|
25
|
+
if block
|
26
|
+
block.call key
|
27
|
+
elsif default_values.length > 0
|
28
|
+
default_values.first
|
29
|
+
else
|
30
|
+
raise ::Identitee::IdentifiableNotFound
|
31
|
+
end
|
21
32
|
end
|
22
33
|
end
|
23
34
|
end
|
@@ -27,11 +38,20 @@ module Identitee
|
|
27
38
|
end
|
28
39
|
|
29
40
|
def all
|
41
|
+
load_all unless all_loaded
|
30
42
|
instances.values
|
31
43
|
end
|
32
44
|
|
45
|
+
def lazy_load key
|
46
|
+
(loaders.detect { |loader| loader.loadable? key } || EmptyLoader.new).lazy_load key
|
47
|
+
end
|
48
|
+
|
33
49
|
private
|
34
50
|
|
35
|
-
|
51
|
+
def load_all
|
52
|
+
loaders.each { |loader| loader.load_all }
|
53
|
+
end
|
54
|
+
|
55
|
+
attr_reader :instances, :loaders, :all_loaded
|
36
56
|
end
|
37
57
|
end
|
data/lib/identitee/identify.rb
CHANGED
@@ -3,40 +3,28 @@ require "identitee/loader"
|
|
3
3
|
|
4
4
|
module Identitee
|
5
5
|
module Identify
|
6
|
-
def identify
|
6
|
+
def identify key, *extra_parameters, &block
|
7
7
|
instance = new *extra_parameters
|
8
8
|
instance.instance_eval &block if block_given?
|
9
9
|
|
10
|
-
identifiables.register
|
10
|
+
identifiables.register key, instance
|
11
11
|
instance
|
12
12
|
end
|
13
13
|
|
14
|
-
def find_identifiable
|
15
|
-
identifiables.find
|
16
|
-
::Identitee::Loader.new(identify_root_directory: identify_root_directory).lazy_load(candidate_id.to_s)
|
17
|
-
identifiables.find candidate_id, "Unknown"
|
18
|
-
end
|
14
|
+
def find_identifiable key, default=new, &block
|
15
|
+
identifiables.find key, default, &block
|
19
16
|
end
|
20
17
|
|
21
18
|
def find_identifiable_key instance
|
22
19
|
identifiables.find_key instance
|
23
20
|
end
|
24
21
|
|
25
|
-
def
|
26
|
-
load_all_identifiables
|
22
|
+
def find_all_identifiables
|
27
23
|
identifiables.all
|
28
24
|
end
|
29
25
|
|
30
|
-
def
|
31
|
-
|
32
|
-
end
|
33
|
-
|
34
|
-
def set_identitee_root path_to_template_root
|
35
|
-
@identify_root_directory = path_to_template_root
|
36
|
-
end
|
37
|
-
|
38
|
-
def identify_root_directory
|
39
|
-
@identify_root_directory
|
26
|
+
def add_identifiable_loader loader
|
27
|
+
identifiables.add_loader loader
|
40
28
|
end
|
41
29
|
|
42
30
|
def identifiables
|
data/lib/identitee/loader.rb
CHANGED
@@ -4,11 +4,13 @@ module Identitee
|
|
4
4
|
@identify_root_directory = options.delete(:identify_root_directory)
|
5
5
|
end
|
6
6
|
|
7
|
-
def
|
8
|
-
full_path
|
7
|
+
def loadable? filename
|
8
|
+
File.exists? full_path(filename)
|
9
|
+
end
|
9
10
|
|
10
|
-
|
11
|
-
|
11
|
+
def lazy_load filename
|
12
|
+
if loadable? filename
|
13
|
+
force_load full_path(filename)
|
12
14
|
else
|
13
15
|
yield if block_given?
|
14
16
|
end
|
@@ -24,6 +26,10 @@ module Identitee
|
|
24
26
|
|
25
27
|
attr_reader :identify_root_directory
|
26
28
|
|
29
|
+
def full_path filename
|
30
|
+
[identify_root_directory, "#{filename}.rb"].compact.join('/')
|
31
|
+
end
|
32
|
+
|
27
33
|
def force_full_load
|
28
34
|
@fully_loaded = true
|
29
35
|
|
data/lib/identitee/version.rb
CHANGED
data/lib/identitee.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require "identitee/version"
|
2
2
|
require "identitee/identify"
|
3
3
|
require "identitee/default_path_builder"
|
4
|
+
require "identitee/identify_key"
|
4
5
|
require "identitee/identify/find_alias"
|
5
6
|
|
6
7
|
module Identitee
|
@@ -8,6 +9,7 @@ module Identitee
|
|
8
9
|
base.extend ::Identitee::Identify
|
9
10
|
base.extend ::Identitee::Identify::FindAlias unless base.method_defined? :find
|
10
11
|
|
11
|
-
|
12
|
+
identify_root_directory = Identitee::DefaultPathBuilder.to_path caller, base
|
13
|
+
base.add_identifiable_loader ::Identitee::Loader.new(identify_root_directory: identify_root_directory)
|
12
14
|
end
|
13
15
|
end
|
@@ -15,12 +15,8 @@ describe "Default the directory to the caller classes directory and the pluraliz
|
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
18
|
-
it "has a identify_root_directory" do
|
19
|
-
DefaultDirectorySetTest.identify_root_directory.should =~ /default_directory_set_tests/
|
20
|
-
end
|
21
|
-
|
22
18
|
it "lazy loads identifyables" do
|
23
|
-
test = DefaultDirectorySetTest.find_identifiable :default_directory_test
|
19
|
+
test = DefaultDirectorySetTest.find_identifiable :default_directory_test, nil
|
24
20
|
test.should_not be_nil
|
25
21
|
test.should be_successful
|
26
22
|
end
|
@@ -3,11 +3,11 @@ require 'spec_helper'
|
|
3
3
|
describe "Force all Loading" do
|
4
4
|
class LoadingAllTest
|
5
5
|
include Identitee
|
6
|
-
|
6
|
+
add_identifiable_loader Identitee::Loader.new(identify_root_directory: File.expand_path("../loading_all_tests/", __FILE__))
|
7
7
|
end
|
8
8
|
|
9
9
|
it "loads all the identifiable before calling all" do
|
10
|
-
identifiables = LoadingAllTest.
|
10
|
+
identifiables = LoadingAllTest.find_all_identifiables
|
11
11
|
identifiables.length.should == 2
|
12
12
|
end
|
13
13
|
end
|
@@ -7,7 +7,7 @@ describe "Lazy Loading" do
|
|
7
7
|
|
8
8
|
attr_accessor :successful
|
9
9
|
|
10
|
-
|
10
|
+
add_identifiable_loader Identitee::Loader.new(identify_root_directory: File.expand_path("../loading_all_tests/", __FILE__))
|
11
11
|
|
12
12
|
def initialize
|
13
13
|
@successful = false
|
@@ -18,10 +18,6 @@ describe "Lazy Loading" do
|
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
|
-
it "has a identify_root_directory" do
|
22
|
-
LazyLoadingTest.identify_root_directory.should =~ /lazy_loading_tests/
|
23
|
-
end
|
24
|
-
|
25
21
|
it "lazy loads identifyables" do
|
26
22
|
test = LazyLoadingTest.find_identifiable :autoload_test
|
27
23
|
test.should_not be_nil
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Identitee
|
2
|
+
describe IdentifyKey do
|
3
|
+
|
4
|
+
class IdentifyKeyExample
|
5
|
+
include Identitee
|
6
|
+
include IdentifyKey
|
7
|
+
|
8
|
+
add_identifiable_loader Identitee::Loader.new(identify_root_directory: File.expand_path("../loading_all_tests/", __FILE__))
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should have the key method" do
|
12
|
+
expect(IdentifyKeyExample.new).to respond_to :key
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should return the correct key" do
|
16
|
+
example = IdentifyKeyExample.identify :example_key_test
|
17
|
+
expect(example.key).to eq "example_key_test"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -74,7 +74,7 @@ describe Identitee do
|
|
74
74
|
TestNotReplacingFind.send(:include, Identitee)
|
75
75
|
|
76
76
|
TestNotReplacingFind.find("something").should == "something"
|
77
|
-
TestNotReplacingFind.find_identifiable("something").should == "Unknown"
|
77
|
+
TestNotReplacingFind.find_identifiable("something", "Unknown").should == "Unknown"
|
78
78
|
end
|
79
79
|
|
80
80
|
it "finds the key for an identifiable" do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: identitee
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nate Davis Olds
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-10-21 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Identifies and stores instances of a class for later loading
|
14
14
|
email:
|
@@ -30,10 +30,12 @@ files:
|
|
30
30
|
- identitee.gemspec
|
31
31
|
- lib/identitee.rb
|
32
32
|
- lib/identitee/default_path_builder.rb
|
33
|
+
- lib/identitee/empty_loader.rb
|
33
34
|
- lib/identitee/identifiable_not_found.rb
|
34
35
|
- lib/identitee/identifiables.rb
|
35
36
|
- lib/identitee/identify.rb
|
36
37
|
- lib/identitee/identify/find_alias.rb
|
38
|
+
- lib/identitee/identify_key.rb
|
37
39
|
- lib/identitee/loader.rb
|
38
40
|
- lib/identitee/version.rb
|
39
41
|
- spec/acceptance/alias_find_acceptance_spec.rb
|
@@ -47,6 +49,7 @@ files:
|
|
47
49
|
- spec/integration/loader_integration_spec.rb
|
48
50
|
- spec/integration/test_files/test_lazy_load.rb
|
49
51
|
- spec/lib/identitee/identifiables_spec.rb
|
52
|
+
- spec/lib/identitee/identify_key_spec.rb
|
50
53
|
- spec/lib/identitee/identify_spec.rb
|
51
54
|
- spec/lib/identitee/loader_spec.rb
|
52
55
|
- spec/spec_helper.rb
|
@@ -86,6 +89,7 @@ test_files:
|
|
86
89
|
- spec/integration/loader_integration_spec.rb
|
87
90
|
- spec/integration/test_files/test_lazy_load.rb
|
88
91
|
- spec/lib/identitee/identifiables_spec.rb
|
92
|
+
- spec/lib/identitee/identify_key_spec.rb
|
89
93
|
- spec/lib/identitee/identify_spec.rb
|
90
94
|
- spec/lib/identitee/loader_spec.rb
|
91
95
|
- spec/spec_helper.rb
|