cayuga 0.0.13 → 0.0.14

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 58e62fad7d7f3e9b0396f5f7c00ffb2864e3e6e30b910354e3b0d263e8f0c5b3
4
- data.tar.gz: dbae9f83ac4d82e3eeef83369db8cf891546f592b6625e844771d85521110145
3
+ metadata.gz: 430452b5bb1b78cc0488ce009950ac22abf7dc1d4b205cb00b96c56c66659bcd
4
+ data.tar.gz: f9f40f73d0a1ce4e45476b3475019f6c90e958aee7e81554ef1f0f29c5cfb8e0
5
5
  SHA512:
6
- metadata.gz: b5785b29a139bae584cc212c0079eb959e208dc76eca5ec4446a47f33eaa4f7215ee9ea3d66fbeff56b8483d25faf2f04cf4ee00f0c3b5dd9f6943870cdb60d9
7
- data.tar.gz: 57495c25d3b9cf85c7f1e4c6ca86fd46e3f389a64bba870555bdba90f39667c5b802d9d29f526fdf189687e40f81a4137d432f38a3316022e9688bb2cd8e5fd1
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
- raise "bad type '#{type}'"
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
@@ -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!(factory.class, filter: Regexp.new(factory.class.stringify))
80
- log_log!(self.class, filter: Regexp.new(self.class.stringify))
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)
@@ -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.stringify))
35
+ .log_log!(self.class, filter: Regexp.new(self.class.name))
36
36
  end
37
37
 
38
38
  end
@@ -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
- name
9
+ symbolize.stringify
11
10
  end
12
11
 
13
12
  def symbolize
14
- name.to_sym
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
- stringify.filenamify(extension)
22
+ symbolize.filenamify(extension)
23
23
  end
24
24
 
25
25
  end
@@ -2,7 +2,7 @@
2
2
  # Copyright (c) 2018 Patrick Thomas. All rights reserved.
3
3
  #
4
4
  # noinspection RubyResolve
5
- require 'facets/string/pathize'
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
- # noinspection RubyResolve
25
- result = pathize.tr('/', '#')
26
- unless extension.nil? || extension.empty?
27
- result += extension[0] == '.' ? '' : '.'
28
- result += extension.stringify
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
 
@@ -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
- klass = Object.const_get(to_s)
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
- stringify.filenamify(extension)
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
@@ -1,3 +1,3 @@
1
1
  module Cayuga
2
- VERSION = '0.0.13'.freeze
2
+ VERSION = '0.0.14'.freeze
3
3
  end
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.13
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