traver 0.2.0 → 0.2.1
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/traver.rb +9 -0
- data/lib/traver/graph.rb +40 -0
- data/lib/traver/graph_creator.rb +20 -0
- data/lib/traver/object_creator.rb +7 -0
- data/lib/traver/version.rb +1 -1
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8aa831df193e85e3df16534f4013983a7a73857d
|
4
|
+
data.tar.gz: 8be0b0fbe6e926eed801c6dc78f87661a98c3886
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 04976719f6a6d1635137bba9e70a890ef40837a7822c95ddfb6c4dfd0983cde6909fd7c7c46044ad9efa36c4c41e12f6be462c5698d5dc2d72727ee0c9f1ea10
|
7
|
+
data.tar.gz: 48cd4fffd40e5dd460997f4ba0bce0d636b56feef4389f1adda876fd79e3ef5d91cbcdb83e580e2ea83c4fb65cf31808ca0c3fd13cc902f56af28be6e326cd89
|
data/lib/traver.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
require "traver/version"
|
2
2
|
require "traver/factory_definer"
|
3
3
|
require "traver/object_creator"
|
4
|
+
require "traver/graph"
|
5
|
+
require "traver/graph_creator"
|
4
6
|
|
5
7
|
module Traver
|
6
8
|
class Error < Exception; end
|
@@ -16,4 +18,11 @@ module Traver
|
|
16
18
|
|
17
19
|
object_creator.created_object
|
18
20
|
end
|
21
|
+
|
22
|
+
def self.create_graph(params = {})
|
23
|
+
graph_creator = GraphCreator.new(params)
|
24
|
+
graph_creator.create_graph
|
25
|
+
|
26
|
+
graph_creator.graph
|
27
|
+
end
|
19
28
|
end
|
data/lib/traver/graph.rb
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
module Traver
|
2
|
+
class Graph
|
3
|
+
def initialize
|
4
|
+
@vertices = {}
|
5
|
+
end
|
6
|
+
|
7
|
+
def add_vertex(key, object)
|
8
|
+
vertices[key] ||= []
|
9
|
+
vertices[key] << object
|
10
|
+
end
|
11
|
+
|
12
|
+
def [](key)
|
13
|
+
key = key.to_s
|
14
|
+
|
15
|
+
if plural?(key)
|
16
|
+
vertices[singularize(key).to_sym]
|
17
|
+
else
|
18
|
+
name, index = key.split(/(\d+)$/)
|
19
|
+
index = (index || 1).to_i
|
20
|
+
|
21
|
+
vertices[name.to_sym][index - 1]
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def method_missing(method_name, *args)
|
26
|
+
self[method_name]
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
attr_reader :vertices
|
31
|
+
|
32
|
+
def plural?(value)
|
33
|
+
value.end_with?("s")
|
34
|
+
end
|
35
|
+
|
36
|
+
def singularize(value)
|
37
|
+
value.chomp("s")
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Traver
|
2
|
+
class GraphCreator
|
3
|
+
attr_reader :params
|
4
|
+
attr_reader :graph
|
5
|
+
|
6
|
+
def initialize(params = {})
|
7
|
+
@params = params
|
8
|
+
@graph = Graph.new
|
9
|
+
end
|
10
|
+
|
11
|
+
def create_graph
|
12
|
+
object_creator = ObjectCreator.new(params)
|
13
|
+
object_creator.after_create = lambda do |creator|
|
14
|
+
graph.add_vertex(creator.factory_name, creator.created_object)
|
15
|
+
end
|
16
|
+
|
17
|
+
object_creator.create_object
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
module Traver
|
2
2
|
class ObjectCreator
|
3
3
|
attr_reader :factory_name, :params
|
4
|
+
attr_accessor :after_create
|
4
5
|
attr_reader :created_object
|
5
6
|
|
6
7
|
def initialize(options)
|
@@ -14,6 +15,7 @@ module Traver
|
|
14
15
|
instantiate_object
|
15
16
|
set_object_state
|
16
17
|
persist_object
|
18
|
+
call_after_create_hook
|
17
19
|
end
|
18
20
|
|
19
21
|
private
|
@@ -53,6 +55,7 @@ module Traver
|
|
53
55
|
|
54
56
|
def do_create_object(params)
|
55
57
|
object_creator = ObjectCreator.new(params)
|
58
|
+
object_creator.after_create = after_create
|
56
59
|
object_creator.create_object
|
57
60
|
|
58
61
|
object_creator.created_object
|
@@ -81,5 +84,9 @@ module Traver
|
|
81
84
|
def persist_object
|
82
85
|
created_object.save if defined?(Rails)
|
83
86
|
end
|
87
|
+
|
88
|
+
def call_after_create_hook
|
89
|
+
after_create.call(self) if after_create
|
90
|
+
end
|
84
91
|
end
|
85
92
|
end
|
data/lib/traver/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: traver
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yuri Kaspervich
|
@@ -97,6 +97,8 @@ files:
|
|
97
97
|
- bin/setup
|
98
98
|
- lib/traver.rb
|
99
99
|
- lib/traver/factory_definer.rb
|
100
|
+
- lib/traver/graph.rb
|
101
|
+
- lib/traver/graph_creator.rb
|
100
102
|
- lib/traver/object_creator.rb
|
101
103
|
- lib/traver/version.rb
|
102
104
|
- traver.gemspec
|