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 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