dev_suite 0.2.5 → 0.2.7

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.
Files changed (95) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +4 -5
  3. data/.vscode/extensions.json +8 -0
  4. data/.vscode/launch.json +39 -0
  5. data/.vscode/settings.json +28 -0
  6. data/Gemfile +4 -1
  7. data/Gemfile.lock +28 -2
  8. data/README.md +39 -31
  9. data/bin/rspec +27 -0
  10. data/lib/dev_suite/directory_tree/builder/base.rb +1 -1
  11. data/lib/dev_suite/directory_tree/builder/builder.rb +13 -0
  12. data/lib/dev_suite/directory_tree/builder.rb +1 -12
  13. data/lib/dev_suite/directory_tree/config/config.rb +1 -1
  14. data/lib/dev_suite/directory_tree/config/configuration.rb +18 -5
  15. data/lib/dev_suite/directory_tree/directory_tree.rb +0 -2
  16. data/lib/dev_suite/directory_tree/node/node.rb +12 -0
  17. data/lib/dev_suite/directory_tree/node.rb +1 -4
  18. data/lib/dev_suite/directory_tree/renderer/base.rb +1 -1
  19. data/lib/dev_suite/directory_tree/renderer/renderer.rb +14 -0
  20. data/lib/dev_suite/directory_tree/renderer.rb +1 -13
  21. data/lib/dev_suite/directory_tree/visualizer/base.rb +1 -1
  22. data/lib/dev_suite/directory_tree/visualizer/visualizer.rb +16 -0
  23. data/lib/dev_suite/directory_tree/visualizer.rb +1 -15
  24. data/lib/dev_suite/performance/config/config.rb +1 -1
  25. data/lib/dev_suite/performance/config/configuration.rb +3 -3
  26. data/lib/dev_suite/performance/data/data.rb +9 -0
  27. data/lib/dev_suite/performance/data.rb +1 -1
  28. data/lib/dev_suite/performance/profiler/base.rb +1 -1
  29. data/lib/dev_suite/performance/profiler/profiler.rb +16 -0
  30. data/lib/dev_suite/performance/profiler.rb +1 -20
  31. data/lib/dev_suite/performance/profiler_manager.rb +1 -0
  32. data/lib/dev_suite/performance/reporter/base.rb +1 -1
  33. data/lib/dev_suite/performance/reporter/reporter.rb +15 -0
  34. data/lib/dev_suite/performance/reporter.rb +1 -14
  35. data/lib/dev_suite/request_logger/adapter/adapter.rb +16 -12
  36. data/lib/dev_suite/request_logger/adapter/base.rb +1 -1
  37. data/lib/dev_suite/request_logger/adapter/faraday.rb +37 -0
  38. data/lib/dev_suite/request_logger/adapter/middleware/faraday.rb +22 -0
  39. data/lib/dev_suite/request_logger/adapter/net_http.rb +1 -0
  40. data/lib/dev_suite/request_logger/adapter.rb +1 -1
  41. data/lib/dev_suite/request_logger/config/config.rb +1 -1
  42. data/lib/dev_suite/request_logger/config/configuration.rb +2 -2
  43. data/lib/dev_suite/request_logger/extractor/base.rb +17 -0
  44. data/lib/dev_suite/request_logger/extractor/extractor.rb +22 -0
  45. data/lib/dev_suite/request_logger/extractor/faraday.rb +37 -0
  46. data/lib/dev_suite/request_logger/extractor/net_http.rb +36 -0
  47. data/lib/dev_suite/request_logger/extractor.rb +9 -0
  48. data/lib/dev_suite/request_logger/logger.rb +22 -28
  49. data/lib/dev_suite/request_logger/request.rb +19 -0
  50. data/lib/dev_suite/request_logger/request_logger.rb +3 -0
  51. data/lib/dev_suite/request_logger/response.rb +28 -0
  52. data/lib/dev_suite/utils/color/config/config.rb +1 -1
  53. data/lib/dev_suite/utils/color/config/configuration.rb +3 -3
  54. data/lib/dev_suite/utils/color/palette/base.rb +1 -14
  55. data/lib/dev_suite/utils/color/palette/palette.rb +16 -0
  56. data/lib/dev_suite/utils/color/palette.rb +1 -13
  57. data/lib/dev_suite/utils/color/strategy/base.rb +1 -1
  58. data/lib/dev_suite/utils/color/strategy/strategy.rb +20 -0
  59. data/lib/dev_suite/utils/color/strategy.rb +1 -19
  60. data/lib/dev_suite/utils/construct/component/base.rb +30 -0
  61. data/lib/dev_suite/utils/construct/component/component.rb +12 -0
  62. data/lib/dev_suite/utils/construct/component/initializer.rb +28 -0
  63. data/lib/dev_suite/utils/construct/component/manager.rb +57 -0
  64. data/lib/dev_suite/utils/construct/{config/configuration.rb → component.rb} +2 -4
  65. data/lib/dev_suite/utils/construct/config/attribute/attr_definition.rb +76 -0
  66. data/lib/dev_suite/utils/construct/config/attribute/attr_initialization.rb +22 -0
  67. data/lib/dev_suite/utils/construct/config/attribute/attr_resolving.rb +80 -0
  68. data/lib/dev_suite/utils/construct/config/attribute/attribute.rb +12 -3
  69. data/lib/dev_suite/utils/construct/config/base.rb +7 -2
  70. data/lib/dev_suite/utils/construct/config/config.rb +2 -10
  71. data/lib/dev_suite/utils/construct/config/dependency_handler.rb +56 -0
  72. data/lib/dev_suite/utils/construct/config/hook/hook.rb +10 -1
  73. data/lib/dev_suite/utils/construct/config/hook/hook_registry.rb +24 -0
  74. data/lib/dev_suite/utils/construct/config/hook/hook_runner.rb +20 -0
  75. data/lib/dev_suite/utils/construct/config/manager.rb +25 -17
  76. data/lib/dev_suite/utils/construct/construct.rb +1 -0
  77. data/lib/dev_suite/utils/dependency_loader.rb +71 -0
  78. data/lib/dev_suite/utils/file_loader/config/config.rb +1 -1
  79. data/lib/dev_suite/utils/file_loader/config/configuration.rb +1 -1
  80. data/lib/dev_suite/utils/file_loader/loader/base.rb +1 -1
  81. data/lib/dev_suite/utils/file_loader/loader/loader.rb +41 -0
  82. data/lib/dev_suite/utils/file_loader/loader.rb +2 -30
  83. data/lib/dev_suite/utils/table/config/config.rb +1 -1
  84. data/lib/dev_suite/utils/table/config/configuration.rb +2 -2
  85. data/lib/dev_suite/utils/table/formatter/formatter.rb +12 -0
  86. data/lib/dev_suite/utils/table/formatter.rb +1 -2
  87. data/lib/dev_suite/utils/table/renderer/base.rb +1 -1
  88. data/lib/dev_suite/utils/table/renderer/renderer.rb +16 -0
  89. data/lib/dev_suite/utils/table/renderer.rb +1 -13
  90. data/lib/dev_suite/utils/utils.rb +1 -0
  91. data/lib/dev_suite/version.rb +3 -1
  92. metadata +39 -6
  93. data/lib/dev_suite/utils/construct/config/attribute/manager.rb +0 -63
  94. data/lib/dev_suite/utils/construct/config/attribute/resolver.rb +0 -31
  95. data/lib/dev_suite/utils/construct/config/initializer.rb +0 -21
@@ -4,7 +4,7 @@ module DevSuite
4
4
  module Utils
5
5
  module FileLoader
6
6
  module Config
7
- class Configuration < BaseConfiguration
7
+ class Configuration < Utils::Construct::Config::Base
8
8
  config_attr :loaders, default_value: [:text, :json, :yaml], type: :array
9
9
 
10
10
  register_hook :after_initialize do
@@ -4,7 +4,7 @@ module DevSuite
4
4
  module Utils
5
5
  module FileLoader
6
6
  module Loader
7
- class Base
7
+ class Base < Utils::Construct::Component::Base
8
8
  class << self
9
9
  def extensions
10
10
  raise NotImplementedError, "You must implement the extensions method"
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DevSuite
4
+ module Utils
5
+ module FileLoader
6
+ module Loader
7
+ require_relative "base"
8
+ require_relative "text"
9
+ require_relative "json"
10
+ require_relative "yaml"
11
+
12
+ class << self
13
+ def registry_loaders(registry, loader_symbols)
14
+ loader_classes = map_loaders(loader_symbols)
15
+ loader_classes.each do |loader|
16
+ registry.register(loader)
17
+ end
18
+ registry
19
+ end
20
+
21
+ private
22
+
23
+ def map_loaders(loader_symbols)
24
+ loader_symbols.map do |symbol|
25
+ case symbol
26
+ when :json
27
+ Loader::Json
28
+ when :text
29
+ Loader::Text
30
+ when :yaml
31
+ Loader::Yaml
32
+ else
33
+ raise "Unknown loader: #{symbol}"
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -4,37 +4,9 @@ module DevSuite
4
4
  module Utils
5
5
  module FileLoader
6
6
  module Loader
7
- require_relative "loader/base"
8
- require_relative "loader/text"
9
- require_relative "loader/json"
10
- require_relative "loader/yaml"
7
+ include Construct::Component::Manager
11
8
 
12
- class << self
13
- def registry_loaders(registry, loader_symbols)
14
- loader_classes = map_loaders(loader_symbols)
15
- loader_classes.each do |loader|
16
- registry.register(loader)
17
- end
18
- registry
19
- end
20
-
21
- private
22
-
23
- def map_loaders(loader_symbols)
24
- loader_symbols.map do |symbol|
25
- case symbol
26
- when :json
27
- Loader::Json
28
- when :text
29
- Loader::Text
30
- when :yaml
31
- Loader::Yaml
32
- else
33
- raise "Unknown loader: #{symbol}"
34
- end
35
- end
36
- end
37
- end
9
+ require_relative "loader/loader"
38
10
  end
39
11
  end
40
12
  end
@@ -4,7 +4,7 @@ module DevSuite
4
4
  module Utils
5
5
  module Table
6
6
  module Config
7
- include Construct::Config
7
+ include Construct::Config::Manager
8
8
 
9
9
  require_relative "configuration"
10
10
  end
@@ -4,7 +4,7 @@ module DevSuite
4
4
  module Utils
5
5
  module Table
6
6
  module Config
7
- class Configuration < BaseConfiguration
7
+ class Configuration < Utils::Construct::Config::Base
8
8
  set_default_settings(
9
9
  colors: {
10
10
  title: :cyan,
@@ -23,7 +23,7 @@ module DevSuite
23
23
  private
24
24
 
25
25
  def resolve_renderer(value)
26
- Renderer.create(value)
26
+ Renderer.build_component(value)
27
27
  end
28
28
  end
29
29
  end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DevSuite
4
+ module Utils
5
+ module Table
6
+ module Formatter
7
+ require_relative "column_width_calculator"
8
+ require_relative "text_aligner"
9
+ end
10
+ end
11
+ end
12
+ end
@@ -4,8 +4,7 @@ module DevSuite
4
4
  module Utils
5
5
  module Table
6
6
  module Formatter
7
- require_relative "formatter/column_width_calculator"
8
- require_relative "formatter/text_aligner"
7
+ require_relative "formatter/formatter"
9
8
  end
10
9
  end
11
10
  end
@@ -4,7 +4,7 @@ module DevSuite
4
4
  module Utils
5
5
  module Table
6
6
  module Renderer
7
- class Base
7
+ class Base < Utils::Construct::Component::Base
8
8
  def render(table)
9
9
  raise NotImplementedError, "Render method must be implemented in subclasses"
10
10
  end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DevSuite
4
+ module Utils
5
+ module Table
6
+ module Renderer
7
+ include Construct::Component::Manager
8
+
9
+ require_relative "base"
10
+ require_relative "simple"
11
+
12
+ register_component(Simple)
13
+ end
14
+ end
15
+ end
16
+ end
@@ -4,19 +4,7 @@ module DevSuite
4
4
  module Utils
5
5
  module Table
6
6
  module Renderer
7
- require_relative "renderer/base"
8
- require_relative "renderer/simple"
9
-
10
- class << self
11
- def create(type)
12
- case type
13
- when :simple
14
- Simple.new
15
- else
16
- raise ArgumentError, "Unknown renderer type: #{type}"
17
- end
18
- end
19
- end
7
+ require_relative "renderer/renderer"
20
8
  end
21
9
  end
22
10
  end
@@ -5,6 +5,7 @@ module DevSuite
5
5
  require_relative "emoji"
6
6
  require_relative "logger"
7
7
  require_relative "error_handler"
8
+ require_relative "dependency_loader"
8
9
  require_relative "construct"
9
10
  require_relative "color"
10
11
  require_relative "table"
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module DevSuite
2
- VERSION = "0.2.5"
4
+ VERSION = "0.2.7"
3
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dev_suite
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.5
4
+ version: 0.2.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Huy Nguyen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-08-19 00:00:00.000000000 Z
11
+ date: 2024-08-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: benchmark
@@ -67,6 +67,9 @@ files:
67
67
  - ".rubocop.yml"
68
68
  - ".tool-versions"
69
69
  - ".travis.yml"
70
+ - ".vscode/extensions.json"
71
+ - ".vscode/launch.json"
72
+ - ".vscode/settings.json"
70
73
  - CODE_OF_CONDUCT.md
71
74
  - Gemfile
72
75
  - Gemfile.lock
@@ -74,6 +77,7 @@ files:
74
77
  - README.md
75
78
  - Rakefile
76
79
  - bin/console
80
+ - bin/rspec
77
81
  - bin/setup
78
82
  - dev_suite.gemspec
79
83
  - exe/devsuite
@@ -88,6 +92,7 @@ files:
88
92
  - lib/dev_suite/directory_tree.rb
89
93
  - lib/dev_suite/directory_tree/builder.rb
90
94
  - lib/dev_suite/directory_tree/builder/base.rb
95
+ - lib/dev_suite/directory_tree/builder/builder.rb
91
96
  - lib/dev_suite/directory_tree/config.rb
92
97
  - lib/dev_suite/directory_tree/config/config.rb
93
98
  - lib/dev_suite/directory_tree/config/configuration.rb
@@ -96,41 +101,56 @@ files:
96
101
  - lib/dev_suite/directory_tree/node/base.rb
97
102
  - lib/dev_suite/directory_tree/node/directory.rb
98
103
  - lib/dev_suite/directory_tree/node/file.rb
104
+ - lib/dev_suite/directory_tree/node/node.rb
99
105
  - lib/dev_suite/directory_tree/node/permission_denied.rb
100
106
  - lib/dev_suite/directory_tree/renderer.rb
101
107
  - lib/dev_suite/directory_tree/renderer/base.rb
108
+ - lib/dev_suite/directory_tree/renderer/renderer.rb
102
109
  - lib/dev_suite/directory_tree/renderer/simple.rb
103
110
  - lib/dev_suite/directory_tree/visualizer.rb
104
111
  - lib/dev_suite/directory_tree/visualizer/base.rb
105
112
  - lib/dev_suite/directory_tree/visualizer/tree.rb
113
+ - lib/dev_suite/directory_tree/visualizer/visualizer.rb
106
114
  - lib/dev_suite/performance.rb
107
115
  - lib/dev_suite/performance/analyzer.rb
108
116
  - lib/dev_suite/performance/config.rb
109
117
  - lib/dev_suite/performance/config/config.rb
110
118
  - lib/dev_suite/performance/config/configuration.rb
111
119
  - lib/dev_suite/performance/data.rb
120
+ - lib/dev_suite/performance/data/data.rb
112
121
  - lib/dev_suite/performance/data/memory_usage.rb
113
122
  - lib/dev_suite/performance/profiler.rb
114
123
  - lib/dev_suite/performance/profiler/base.rb
115
124
  - lib/dev_suite/performance/profiler/execution_time.rb
116
125
  - lib/dev_suite/performance/profiler/memory.rb
126
+ - lib/dev_suite/performance/profiler/profiler.rb
117
127
  - lib/dev_suite/performance/profiler_manager.rb
118
128
  - lib/dev_suite/performance/reporter.rb
119
129
  - lib/dev_suite/performance/reporter/base.rb
120
130
  - lib/dev_suite/performance/reporter/helpers.rb
121
131
  - lib/dev_suite/performance/reporter/helpers/stat_mappings.rb
122
132
  - lib/dev_suite/performance/reporter/helpers/table_builder.rb
133
+ - lib/dev_suite/performance/reporter/reporter.rb
123
134
  - lib/dev_suite/performance/reporter/simple.rb
124
135
  - lib/dev_suite/request_logger.rb
125
136
  - lib/dev_suite/request_logger/adapter.rb
126
137
  - lib/dev_suite/request_logger/adapter/adapter.rb
127
138
  - lib/dev_suite/request_logger/adapter/base.rb
139
+ - lib/dev_suite/request_logger/adapter/faraday.rb
140
+ - lib/dev_suite/request_logger/adapter/middleware/faraday.rb
128
141
  - lib/dev_suite/request_logger/adapter/net_http.rb
129
142
  - lib/dev_suite/request_logger/config.rb
130
143
  - lib/dev_suite/request_logger/config/config.rb
131
144
  - lib/dev_suite/request_logger/config/configuration.rb
145
+ - lib/dev_suite/request_logger/extractor.rb
146
+ - lib/dev_suite/request_logger/extractor/base.rb
147
+ - lib/dev_suite/request_logger/extractor/extractor.rb
148
+ - lib/dev_suite/request_logger/extractor/faraday.rb
149
+ - lib/dev_suite/request_logger/extractor/net_http.rb
132
150
  - lib/dev_suite/request_logger/logger.rb
151
+ - lib/dev_suite/request_logger/request.rb
133
152
  - lib/dev_suite/request_logger/request_logger.rb
153
+ - lib/dev_suite/request_logger/response.rb
134
154
  - lib/dev_suite/utils.rb
135
155
  - lib/dev_suite/utils/color.rb
136
156
  - lib/dev_suite/utils/color/color.rb
@@ -141,31 +161,41 @@ files:
141
161
  - lib/dev_suite/utils/color/palette.rb
142
162
  - lib/dev_suite/utils/color/palette/base.rb
143
163
  - lib/dev_suite/utils/color/palette/default.rb
164
+ - lib/dev_suite/utils/color/palette/palette.rb
144
165
  - lib/dev_suite/utils/color/strategy.rb
145
166
  - lib/dev_suite/utils/color/strategy/base.rb
146
167
  - lib/dev_suite/utils/color/strategy/basic.rb
147
168
  - lib/dev_suite/utils/color/strategy/rgb.rb
169
+ - lib/dev_suite/utils/color/strategy/strategy.rb
148
170
  - lib/dev_suite/utils/color/strategy/theme.rb
149
171
  - lib/dev_suite/utils/construct.rb
172
+ - lib/dev_suite/utils/construct/component.rb
173
+ - lib/dev_suite/utils/construct/component/base.rb
174
+ - lib/dev_suite/utils/construct/component/component.rb
175
+ - lib/dev_suite/utils/construct/component/initializer.rb
176
+ - lib/dev_suite/utils/construct/component/manager.rb
150
177
  - lib/dev_suite/utils/construct/config.rb
151
178
  - lib/dev_suite/utils/construct/config/attribute.rb
179
+ - lib/dev_suite/utils/construct/config/attribute/attr_definition.rb
180
+ - lib/dev_suite/utils/construct/config/attribute/attr_initialization.rb
181
+ - lib/dev_suite/utils/construct/config/attribute/attr_resolving.rb
152
182
  - lib/dev_suite/utils/construct/config/attribute/attribute.rb
153
- - lib/dev_suite/utils/construct/config/attribute/manager.rb
154
- - lib/dev_suite/utils/construct/config/attribute/resolver.rb
155
183
  - lib/dev_suite/utils/construct/config/attribute/validator.rb
156
184
  - lib/dev_suite/utils/construct/config/base.rb
157
185
  - lib/dev_suite/utils/construct/config/config.rb
158
- - lib/dev_suite/utils/construct/config/configuration.rb
186
+ - lib/dev_suite/utils/construct/config/dependency_handler.rb
159
187
  - lib/dev_suite/utils/construct/config/hook.rb
160
188
  - lib/dev_suite/utils/construct/config/hook/hook.rb
189
+ - lib/dev_suite/utils/construct/config/hook/hook_registry.rb
190
+ - lib/dev_suite/utils/construct/config/hook/hook_runner.rb
161
191
  - lib/dev_suite/utils/construct/config/hook/manager.rb
162
- - lib/dev_suite/utils/construct/config/initializer.rb
163
192
  - lib/dev_suite/utils/construct/config/manager.rb
164
193
  - lib/dev_suite/utils/construct/config/settings.rb
165
194
  - lib/dev_suite/utils/construct/config/settings/base.rb
166
195
  - lib/dev_suite/utils/construct/config/settings/manager.rb
167
196
  - lib/dev_suite/utils/construct/config/settings/settings.rb
168
197
  - lib/dev_suite/utils/construct/construct.rb
198
+ - lib/dev_suite/utils/dependency_loader.rb
169
199
  - lib/dev_suite/utils/emoji.rb
170
200
  - lib/dev_suite/utils/error_handler.rb
171
201
  - lib/dev_suite/utils/file_loader.rb
@@ -176,6 +206,7 @@ files:
176
206
  - lib/dev_suite/utils/file_loader/loader.rb
177
207
  - lib/dev_suite/utils/file_loader/loader/base.rb
178
208
  - lib/dev_suite/utils/file_loader/loader/json.rb
209
+ - lib/dev_suite/utils/file_loader/loader/loader.rb
179
210
  - lib/dev_suite/utils/file_loader/loader/text.rb
180
211
  - lib/dev_suite/utils/file_loader/loader/yaml.rb
181
212
  - lib/dev_suite/utils/file_loader/loader_manager.rb
@@ -192,9 +223,11 @@ files:
192
223
  - lib/dev_suite/utils/table/config/configuration.rb
193
224
  - lib/dev_suite/utils/table/formatter.rb
194
225
  - lib/dev_suite/utils/table/formatter/column_width_calculator.rb
226
+ - lib/dev_suite/utils/table/formatter/formatter.rb
195
227
  - lib/dev_suite/utils/table/formatter/text_aligner.rb
196
228
  - lib/dev_suite/utils/table/renderer.rb
197
229
  - lib/dev_suite/utils/table/renderer/base.rb
230
+ - lib/dev_suite/utils/table/renderer/renderer.rb
198
231
  - lib/dev_suite/utils/table/renderer/simple.rb
199
232
  - lib/dev_suite/utils/table/row.rb
200
233
  - lib/dev_suite/utils/table/table.rb
@@ -1,63 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module DevSuite
4
- module Utils
5
- module Construct
6
- module Config
7
- module Attribute
8
- module Manager
9
- include Validator
10
- include Resolver
11
-
12
- class << self
13
- def included(base)
14
- base.extend(ClassMethods)
15
- end
16
- end
17
-
18
- module ClassMethods
19
- def config_attr(attr, default_value: nil, type: nil, resolver: nil)
20
- config_attrs[attr] = { default_value: default_value, type: type, resolver: resolver }
21
- define_config_attr_methods(attr)
22
- end
23
-
24
- def config_attrs
25
- @config_attrs ||= {}
26
- end
27
-
28
- def config_attr_present?(attr)
29
- config_attrs.key?(attr)
30
- end
31
-
32
- private
33
-
34
- def define_config_attr_methods(attr)
35
- define_method(attr) { instance_variable_get("@#{attr}") }
36
- define_method("#{attr}=") do |value|
37
- validate_and_set_config_attr(attr: attr, value: value)
38
- end
39
- end
40
- end
41
-
42
- private
43
-
44
- def initialize_config_attrs
45
- self.class.config_attrs.each do |attr, details|
46
- send("#{attr}=", details[:default_value]) unless instance_variable_defined?("@#{attr}")
47
- end
48
- end
49
-
50
- def validate_and_set_config_attr(attr:, value:)
51
- attr_details = self.class.config_attrs[attr]
52
- type, resolver = attr_details.values_at(:type, :resolver)
53
-
54
- validate_config_attr_type!(attr: attr, value: value, type: type) if type
55
- resolved_value = resolver ? resolve_config_attr(value: value, resolver: resolver) : value
56
- instance_variable_set("@#{attr}", resolved_value)
57
- end
58
- end
59
- end
60
- end
61
- end
62
- end
63
- end
@@ -1,31 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module DevSuite
4
- module Utils
5
- module Construct
6
- module Config
7
- module Attribute
8
- module Resolver
9
- extend self
10
-
11
- # Resolves the value of an attribute based on its resolver.
12
- # If no resolver is provided, the value is returned as is.
13
- #
14
- # @param value [Object] The value to resolve.
15
- # @param resolver [Proc] The resolver to use for the attribute.
16
- def resolve_config_attr(value:, resolver:)
17
- case resolver
18
- when Proc
19
- resolver.call(value)
20
- when Symbol
21
- send(resolver, value)
22
- else
23
- value
24
- end
25
- end
26
- end
27
- end
28
- end
29
- end
30
- end
31
- end
@@ -1,21 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module DevSuite
4
- module Utils
5
- module Construct
6
- module Config
7
- module Initializer
8
- class << self
9
- def define_config_constants(base)
10
- base.const_set(:BaseConfiguration, Configuration)
11
-
12
- unless base.const_defined?(:Configuration)
13
- base.const_set(:Configuration, Class.new(base::BaseConfiguration))
14
- end
15
- end
16
- end
17
- end
18
- end
19
- end
20
- end
21
- end