cayuga 0.0.13 → 0.0.14
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/cayuga/object/factory.rb +4 -51
- data/lib/cayuga/object/factory_helper.rb +66 -0
- data/lib/cayuga/object/logger.rb +3 -3
- data/lib/cayuga/object/object.rb +1 -1
- data/lib/cayuga/tools/class.rb +4 -4
- data/lib/cayuga/tools/string.rb +37 -8
- data/lib/cayuga/tools/symbol.rb +12 -3
- data/lib/cayuga/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 430452b5bb1b78cc0488ce009950ac22abf7dc1d4b205cb00b96c56c66659bcd
|
4
|
+
data.tar.gz: f9f40f73d0a1ce4e45476b3475019f6c90e958aee7e81554ef1f0f29c5cfb8e0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9c44f742eff1b66145b88d38adc3b3417333607699ef27323c2b9b5598eca03ef0d731509efbdfcf0f86448e2c881e9153665bf210b3e66bf7d68d585987a7ab
|
7
|
+
data.tar.gz: 9fd2307742f597387bede455dcfa3a51dbebfb43e27e7cb8840e2fe70e3a613e2e4ad8ad6aa39dfbba83070499c197ee3162b2a5ec3c9b50235c83bf556759b0
|
@@ -5,11 +5,13 @@ require 'json'
|
|
5
5
|
require 'ice_nine'
|
6
6
|
require 'ice_nine/core_ext/object'
|
7
7
|
require 'cayuga'
|
8
|
+
require_relative 'factory_helper.rb'
|
8
9
|
|
9
10
|
module Cayuga
|
10
11
|
module Object
|
11
12
|
# Cayuga Object Factory
|
12
13
|
class Factory
|
14
|
+
include Cayuga::Object::FactoryHelper
|
13
15
|
include Tools::Loggable
|
14
16
|
|
15
17
|
attr_reader :configuration_name, :logs_directory
|
@@ -28,14 +30,9 @@ module Cayuga
|
|
28
30
|
|
29
31
|
def register(instance, klass, name = nil)
|
30
32
|
key = klass.symbolize
|
31
|
-
unless lookup_registered_instances(key, name).nil?
|
32
|
-
value = name.nil? ? klass.string : "#{klass.string}[#{name}]"
|
33
|
-
raise "instance for #{value} already registered}"
|
34
|
-
end
|
35
33
|
type = type(key)
|
34
|
+
generate_registration_errors(klass, name, key, type)
|
36
35
|
case type
|
37
|
-
when :singleton # , :factory
|
38
|
-
instances[key] = instance
|
39
36
|
when :named
|
40
37
|
value = instances[key]
|
41
38
|
if value.nil?
|
@@ -44,7 +41,7 @@ module Cayuga
|
|
44
41
|
end
|
45
42
|
value[name] = instance
|
46
43
|
else
|
47
|
-
|
44
|
+
instances[key] = instance
|
48
45
|
end
|
49
46
|
instance
|
50
47
|
end
|
@@ -81,10 +78,6 @@ module Cayuga
|
|
81
78
|
|
82
79
|
private
|
83
80
|
|
84
|
-
OBJECTS = {
|
85
|
-
singletons: %w[Cayuga::Object::Logger Cayuga::Object::Constants]
|
86
|
-
}.deep_freeze
|
87
|
-
|
88
81
|
attr_reader :configuration, :types, :instances
|
89
82
|
|
90
83
|
def initialize(config)
|
@@ -97,46 +90,6 @@ module Cayuga
|
|
97
90
|
@directories = configuration[:directories].freeze
|
98
91
|
end
|
99
92
|
|
100
|
-
def setup_types
|
101
|
-
@types = {}
|
102
|
-
register_classes(configuration[:object_classes], :object)
|
103
|
-
register_classes(OBJECTS[:singletons], :singleton)
|
104
|
-
register_classes(configuration[:singleton_classes], :singleton)
|
105
|
-
register_classes(
|
106
|
-
configuration[:named_object_classes], :named
|
107
|
-
)
|
108
|
-
end
|
109
|
-
|
110
|
-
def register_classes(list, type)
|
111
|
-
return if list.nil?
|
112
|
-
list.each do |klass|
|
113
|
-
types[klass.symbolize] = type
|
114
|
-
end
|
115
|
-
end
|
116
|
-
|
117
|
-
def lookup_registered_instances(key, name)
|
118
|
-
value = instances[key]
|
119
|
-
if !value.nil? && !name.nil?
|
120
|
-
value = value[name]
|
121
|
-
end
|
122
|
-
value
|
123
|
-
end
|
124
|
-
|
125
|
-
def create_instance(type, klass, name)
|
126
|
-
case type
|
127
|
-
when :object, :singleton
|
128
|
-
object = klass.create(self, configuration)
|
129
|
-
# log.info("singleton #{klass} created ")
|
130
|
-
when :named
|
131
|
-
object = klass.create(self, configuration, name)
|
132
|
-
# log.info("#{klass} created with name #{name}")
|
133
|
-
else
|
134
|
-
raise "unregistered or incorrectly registered class #{klass}"
|
135
|
-
end
|
136
|
-
object
|
137
|
-
end
|
138
|
-
|
139
93
|
end
|
140
|
-
|
141
94
|
end
|
142
95
|
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
#
|
2
|
+
# Copyright (c) 2018 Patrick Thomas. All rights reserved.
|
3
|
+
#
|
4
|
+
require 'ice_nine'
|
5
|
+
require 'ice_nine/core_ext/object'
|
6
|
+
|
7
|
+
module Cayuga
|
8
|
+
module Object
|
9
|
+
# Cayuga Object Factory Helper
|
10
|
+
module FactoryHelper
|
11
|
+
private
|
12
|
+
|
13
|
+
OBJECTS = {
|
14
|
+
singletons: %w[Cayuga::Object::Logger Cayuga::Object::Constants]
|
15
|
+
}.deep_freeze
|
16
|
+
|
17
|
+
def setup_types
|
18
|
+
@types = {}
|
19
|
+
register_classes(configuration[:object_classes], :object)
|
20
|
+
register_classes(OBJECTS[:singletons], :singleton)
|
21
|
+
register_classes(configuration[:singleton_classes], :singleton)
|
22
|
+
register_classes(
|
23
|
+
configuration[:named_object_classes], :named
|
24
|
+
)
|
25
|
+
end
|
26
|
+
|
27
|
+
def register_classes(list, type)
|
28
|
+
return if list.nil?
|
29
|
+
list.each do |klass|
|
30
|
+
types[klass.symbolize] = type
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def lookup_registered_instances(key, name)
|
35
|
+
value = instances[key]
|
36
|
+
if !value.nil? && !name.nil?
|
37
|
+
value = value[name]
|
38
|
+
end
|
39
|
+
value
|
40
|
+
end
|
41
|
+
|
42
|
+
def generate_registration_errors(klass, name, key, type)
|
43
|
+
unless lookup_registered_instances(key, name).nil?
|
44
|
+
value = name.nil? ? klass.string : "#{klass.string}[#{name}]"
|
45
|
+
raise "instance for #{value} already registered}"
|
46
|
+
end
|
47
|
+
types = %i[singleton named]
|
48
|
+
raise "can't register type '#{type}'" unless types.include? type
|
49
|
+
end
|
50
|
+
|
51
|
+
def create_instance(type, klass, name)
|
52
|
+
case type
|
53
|
+
when :object, :singleton
|
54
|
+
object = klass.create(self, configuration)
|
55
|
+
# log.info("singleton #{klass} created ")
|
56
|
+
when :named
|
57
|
+
object = klass.create(self, configuration, name)
|
58
|
+
# log.info("#{klass} created with name #{name}")
|
59
|
+
else
|
60
|
+
raise "unregistered or incorrectly registered class #{klass}"
|
61
|
+
end
|
62
|
+
object
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
data/lib/cayuga/object/logger.rb
CHANGED
@@ -74,10 +74,10 @@ module Cayuga
|
|
74
74
|
end
|
75
75
|
|
76
76
|
def create_logs
|
77
|
-
log_log!(:console, stream: $stderr, level: :warn)
|
78
77
|
log_log!(:main, filename: generic_log_file(:main))
|
79
|
-
log_log!(
|
80
|
-
log_log!(
|
78
|
+
log_log!(self.class, filter: Regexp.new(self.class.name))
|
79
|
+
log_log!(:console, stream: $stderr, level: :warn)
|
80
|
+
log_log!(factory.class, filter: Regexp.new(factory.class.name))
|
81
81
|
end
|
82
82
|
|
83
83
|
def log_appender_exists?(name)
|
data/lib/cayuga/object/object.rb
CHANGED
@@ -32,7 +32,7 @@ module Cayuga
|
|
32
32
|
@configuration_name = factory.configuration_name
|
33
33
|
return if self.class == Logger
|
34
34
|
factory[Logger]
|
35
|
-
.log_log!(self.class, filter: Regexp.new(self.class.
|
35
|
+
.log_log!(self.class, filter: Regexp.new(self.class.name))
|
36
36
|
end
|
37
37
|
|
38
38
|
end
|
data/lib/cayuga/tools/class.rb
CHANGED
@@ -1,17 +1,17 @@
|
|
1
1
|
#
|
2
2
|
# Copyright (c) 2018 Patrick Thomas. All rights reserved.
|
3
3
|
#
|
4
|
-
|
5
4
|
module Cayuga
|
6
5
|
module Tools
|
7
6
|
# Cayuga Tools Class
|
8
7
|
module Class
|
9
8
|
def stringify
|
10
|
-
|
9
|
+
symbolize.stringify
|
11
10
|
end
|
12
11
|
|
13
12
|
def symbolize
|
14
|
-
|
13
|
+
# noinspection RubyResolve
|
14
|
+
name.methodize.to_sym
|
15
15
|
end
|
16
16
|
|
17
17
|
def classify
|
@@ -19,7 +19,7 @@ module Cayuga
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def filenamify(extension = nil)
|
22
|
-
|
22
|
+
symbolize.filenamify(extension)
|
23
23
|
end
|
24
24
|
|
25
25
|
end
|
data/lib/cayuga/tools/string.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
# Copyright (c) 2018 Patrick Thomas. All rights reserved.
|
3
3
|
#
|
4
4
|
# noinspection RubyResolve
|
5
|
-
require 'facets/string/
|
5
|
+
require 'facets/string/methodize'
|
6
6
|
|
7
7
|
module Cayuga
|
8
8
|
module Tools
|
@@ -13,7 +13,7 @@ module Cayuga
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def symbolize
|
16
|
-
to_sym
|
16
|
+
standardize.tr('-', '_').gsub('::', '__').to_sym
|
17
17
|
end
|
18
18
|
|
19
19
|
def classify
|
@@ -21,16 +21,45 @@ module Cayuga
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def filenamify(extension = nil)
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
24
|
+
symbolize.filenamify(extension)
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def alternative?
|
30
|
+
match(/[A-Z]/)
|
31
|
+
end
|
32
|
+
|
33
|
+
def standardize
|
34
|
+
return self unless alternative?
|
35
|
+
standardize_string(self)
|
36
|
+
end
|
37
|
+
|
38
|
+
def standardize_string(string)
|
39
|
+
return string if string.empty?
|
40
|
+
string =~ /^([^A-Za-z0-9]+)?([A-Za-z0-9]+)?(.*)$/
|
41
|
+
my_matches = []
|
42
|
+
(1..3).each do |i|
|
43
|
+
last = Regexp.last_match(i)
|
44
|
+
my_matches << (last.nil? ? '' : last)
|
45
|
+
end
|
46
|
+
my_matches[0] +
|
47
|
+
standardize_word(my_matches[1]) +
|
48
|
+
standardize_string(my_matches[2])
|
49
|
+
end
|
50
|
+
|
51
|
+
def standardize_word(word)
|
52
|
+
case word
|
53
|
+
when /[A-Z][a-z]/
|
54
|
+
# noinspection RubyResolve
|
55
|
+
word.methodize
|
56
|
+
else
|
57
|
+
word
|
29
58
|
end
|
30
|
-
result
|
31
59
|
end
|
32
60
|
|
33
61
|
end
|
62
|
+
|
34
63
|
end
|
35
64
|
end
|
36
65
|
|
data/lib/cayuga/tools/symbol.rb
CHANGED
@@ -1,13 +1,15 @@
|
|
1
1
|
#
|
2
2
|
# Copyright (c) 2018 Patrick Thomas. All rights reserved.
|
3
3
|
#
|
4
|
+
# noinspection RubyResolve
|
5
|
+
require 'facets/string/modulize'
|
4
6
|
|
5
7
|
module Cayuga
|
6
8
|
module Tools
|
7
9
|
# Cayuga Tools Symbol
|
8
10
|
module Symbol
|
9
11
|
def stringify
|
10
|
-
to_s
|
12
|
+
to_s.gsub('__', '::').tr('_', '-')
|
11
13
|
end
|
12
14
|
|
13
15
|
def symbolize
|
@@ -15,13 +17,20 @@ module Cayuga
|
|
15
17
|
end
|
16
18
|
|
17
19
|
def classify
|
18
|
-
|
20
|
+
# noinspection RubyResolve
|
21
|
+
klass = Object.const_get(to_s.modulize)
|
19
22
|
raise NameError, "wrong class name '#{klass}'" unless klass.is_a?(Class)
|
20
23
|
klass
|
21
24
|
end
|
22
25
|
|
23
26
|
def filenamify(extension = nil)
|
24
|
-
|
27
|
+
# noinspection RubyResolve
|
28
|
+
result = to_s
|
29
|
+
unless extension.nil? || extension.empty?
|
30
|
+
result += extension[0] == '.' ? '' : '.'
|
31
|
+
result += extension.stringify
|
32
|
+
end
|
33
|
+
result
|
25
34
|
end
|
26
35
|
|
27
36
|
end
|
data/lib/cayuga/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cayuga
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.14
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- patrick
|
@@ -128,6 +128,7 @@ files:
|
|
128
128
|
- lib/cayuga.rb
|
129
129
|
- lib/cayuga/object/constants.rb
|
130
130
|
- lib/cayuga/object/factory.rb
|
131
|
+
- lib/cayuga/object/factory_helper.rb
|
131
132
|
- lib/cayuga/object/logger.rb
|
132
133
|
- lib/cayuga/object/named_object.rb
|
133
134
|
- lib/cayuga/object/object.rb
|