rggen-core 0.22.0 → 0.25.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.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +1 -1
  3. data/README.md +2 -1
  4. data/exe/rggen +2 -2
  5. data/lib/rggen/core.rb +8 -1
  6. data/lib/rggen/core/base/component.rb +5 -6
  7. data/lib/rggen/core/base/component_factory.rb +8 -5
  8. data/lib/rggen/core/builder/builder.rb +23 -17
  9. data/lib/rggen/core/builder/component_registry.rb +8 -9
  10. data/lib/rggen/core/builder/feature_registry.rb +15 -15
  11. data/lib/rggen/core/builder/layer.rb +44 -29
  12. data/lib/rggen/core/builder/list_feature_entry.rb +5 -9
  13. data/lib/rggen/core/builder/loader_registry.rb +1 -2
  14. data/lib/rggen/core/builder/plugin_manager.rb +38 -43
  15. data/lib/rggen/core/builder/plugin_spec.rb +83 -0
  16. data/lib/rggen/core/builder/simple_feature_entry.rb +4 -4
  17. data/lib/rggen/core/configuration.rb +3 -2
  18. data/lib/rggen/core/configuration/toml_loader.rb +18 -0
  19. data/lib/rggen/core/core_extensions/object.rb +4 -4
  20. data/lib/rggen/core/dsl.rb +1 -1
  21. data/lib/rggen/core/exceptions.rb +6 -4
  22. data/lib/rggen/core/facets.rb +1 -1
  23. data/lib/rggen/core/input_base/component.rb +12 -0
  24. data/lib/rggen/core/input_base/component_factory.rb +1 -0
  25. data/lib/rggen/core/input_base/feature.rb +22 -8
  26. data/lib/rggen/core/input_base/input_data.rb +24 -17
  27. data/lib/rggen/core/input_base/input_matcher.rb +5 -5
  28. data/lib/rggen/core/input_base/loader.rb +15 -15
  29. data/lib/rggen/core/input_base/property.rb +17 -11
  30. data/lib/rggen/core/input_base/toml_loader.rb +16 -0
  31. data/lib/rggen/core/input_base/yaml_loader.rb +1 -18
  32. data/lib/rggen/core/options.rb +6 -0
  33. data/lib/rggen/core/output_base/code_generator.rb +5 -6
  34. data/lib/rggen/core/output_base/document_component_factory.rb +10 -0
  35. data/lib/rggen/core/output_base/feature.rb +15 -11
  36. data/lib/rggen/core/output_base/file_writer.rb +1 -1
  37. data/lib/rggen/core/output_base/source_file_component_factory.rb +15 -0
  38. data/lib/rggen/core/output_base/template_engine.rb +4 -5
  39. data/lib/rggen/core/plugin.rb +16 -0
  40. data/lib/rggen/core/register_map.rb +4 -5
  41. data/lib/rggen/core/register_map/hash_loader.rb +6 -9
  42. data/lib/rggen/core/register_map/toml_loader.rb +18 -0
  43. data/lib/rggen/core/utility/attribute_setter.rb +5 -0
  44. data/lib/rggen/core/utility/code_utility/code_block.rb +11 -5
  45. data/lib/rggen/core/utility/error_utility.rb +33 -6
  46. data/lib/rggen/core/version.rb +2 -4
  47. metadata +32 -6
  48. data/lib/rggen/core/base/proxy_call.rb +0 -18
@@ -5,16 +5,15 @@ module RgGen
5
5
  module RegisterMap
6
6
  def self.setup(builder)
7
7
  builder.input_component_registry(:register_map) do
8
- register_component [
9
- :root, :register_block, :register_file, :register, :bit_field
10
- ] do |layer|
8
+ register_component do
11
9
  component Component, ComponentFactory
12
- feature Feature, FeatureFactory if layer != :root
10
+ feature Feature, FeatureFactory
13
11
  end
14
12
 
15
13
  register_loader :ruby, RubyLoader
16
- register_loader :yaml, YAMLLoader
17
14
  register_loader :json, JSONLoader
15
+ register_loader :toml, TOMLLoader
16
+ register_loader :yaml, YAMLLoader
18
17
  end
19
18
  end
20
19
  end
@@ -29,14 +29,13 @@ module RgGen
29
29
  end
30
30
 
31
31
  def format_array_layer_data(read_data, layer, file)
32
- read_data.each_with_object({}) do |data, layer_data|
33
- layer_data.merge!(fomrat_hash_layer_data(data, layer, file))
34
- end
32
+ read_data
33
+ .map { |data| fomrat_hash_layer_data(data, layer, file) }
34
+ .inject(&:merge)
35
35
  end
36
36
 
37
37
  def fomrat_hash_layer_data(read_data, layer, file)
38
- convert_to_hash(read_data, file)
39
- .reject { |key, _| SUB_LAYER_KEYS[layer]&.include?(key) }
38
+ convert_to_hash(read_data, file).except(*SUB_LAYER_KEYS[layer])
40
39
  end
41
40
 
42
41
  def format_sub_layer_data(read_data, layer, file)
@@ -55,10 +54,8 @@ module RgGen
55
54
 
56
55
  def format_hash_sub_layer_data(read_data, layer, file, sub_layer_data = {})
57
56
  convert_to_hash(read_data, file)
58
- .select { |key, _| SUB_LAYER_KEYS[layer]&.include?(key) }
59
- .each do |key, value|
60
- merge_sub_layer_data(sub_layer_data, layer, key, value)
61
- end
57
+ .slice(*SUB_LAYER_KEYS[layer])
58
+ .each { |k, v| merge_sub_layer_data(sub_layer_data, layer, k, v) }
62
59
  sub_layer_data
63
60
  end
64
61
 
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RgGen
4
+ module Core
5
+ module RegisterMap
6
+ class TOMLLoader < Loader
7
+ include HashLoader
8
+ include InputBase::TOMLLoader
9
+
10
+ support_types [:toml]
11
+
12
+ def read_file(file)
13
+ load_toml(file)
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -24,6 +24,11 @@ module RgGen
24
24
  end
25
25
  end
26
26
  end
27
+
28
+ def inherited(subclass)
29
+ super
30
+ export_instance_variable(:@attributes, subclass, &:dup)
31
+ end
27
32
  end
28
33
 
29
34
  def self.included(class_or_module)
@@ -15,11 +15,13 @@ module RgGen
15
15
  attr_reader :indent
16
16
 
17
17
  def <<(rhs)
18
- return push_string(rhs) if rhs.is_a?(String)
19
- return push_code_block(rhs) if rhs.is_a?(CodeBlock)
20
- return rhs.inject(self, :<<) if rhs.is_a?(Array)
21
- return self << rhs.to_code if rhs.respond_to?(:to_code)
22
- push_word(rhs)
18
+ case rhs
19
+ when String then push_string(rhs)
20
+ when CodeBlock then push_code_block(rhs)
21
+ when Array then rhs.inject(self, :<<)
22
+ when code? then self << rhs.to_code
23
+ else push_word(rhs)
24
+ end
23
25
  end
24
26
 
25
27
  def indent=(indent)
@@ -74,6 +76,10 @@ module RgGen
74
76
  self
75
77
  end
76
78
 
79
+ def code?
80
+ ->(rhs) { rhs.respond_to?(:to_code) }
81
+ end
82
+
77
83
  def newline
78
84
  "\n"
79
85
  end
@@ -4,14 +4,41 @@ module RgGen
4
4
  module Core
5
5
  module Utility
6
6
  module ErrorUtility
7
- module_function
7
+ class MessageComposer
8
+ def compose(error, verbose, backtrace)
9
+ lines = []
10
+ add_basic_info(error, lines)
11
+ add_verbose_info(error, lines) if verbose
12
+ add_backtrace(error, lines) if backtrace
13
+ lines.join("\n")
14
+ end
15
+
16
+ private
17
+
18
+ def add_basic_info(error, lines)
19
+ lines << "[#{error.class.lastname}] #{error}"
20
+ end
21
+
22
+ def add_verbose_info(error, lines)
23
+ return unless error.respond_to?(:verbose_info)
24
+ return unless error.verbose_info
25
+
26
+ lines << 'verbose information:'
27
+ error
28
+ .verbose_info.lines(chomp: true)
29
+ .each { |info| lines << " #{info}" }
30
+ end
8
31
 
9
- def compose_error_message(error, verbose)
10
- lines = []
11
- lines << "[#{error.class.lastname}] #{error.message}"
12
- verbose &&
32
+ def add_backtrace(error, lines)
33
+ lines << 'backtrace:'
13
34
  error.backtrace.each { |trace| lines << " #{trace}" }
14
- lines.join("\n")
35
+ end
36
+ end
37
+
38
+ module_function
39
+
40
+ def compose_error_message(error, verbose, backtrace)
41
+ MessageComposer.new.compose(error, verbose, backtrace)
15
42
  end
16
43
  end
17
44
  end
@@ -2,9 +2,7 @@
2
2
 
3
3
  module RgGen
4
4
  module Core
5
- MAJOR = 0
6
- MINOR = 22
7
- PATCH = 0
8
- VERSION = "#{MAJOR}.#{MINOR}.#{PATCH}"
5
+ VERSION = '0.25.1'
6
+ MAJOR, MINOR, PATCH = VERSION.split('.').map(&:to_i)
9
7
  end
10
8
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rggen-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.22.0
4
+ version: 0.25.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Taichi Ishitani
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-08-17 00:00:00.000000000 Z
11
+ date: 2021-05-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: docile
@@ -17,6 +17,9 @@ dependencies:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: 1.1.5
20
+ - - "!="
21
+ - !ruby/object:Gem::Version
22
+ version: 1.3.3
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -24,6 +27,9 @@ dependencies:
24
27
  - - ">="
25
28
  - !ruby/object:Gem::Version
26
29
  version: 1.1.5
30
+ - - "!="
31
+ - !ruby/object:Gem::Version
32
+ version: 1.3.3
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: erubi
29
35
  requirement: !ruby/object:Gem::Requirement
@@ -52,6 +58,20 @@ dependencies:
52
58
  - - ">="
53
59
  - !ruby/object:Gem::Version
54
60
  version: '3.0'
61
+ - !ruby/object:Gem::Dependency
62
+ name: tomlrb
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '2.0'
68
+ type: :runtime
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '2.0'
55
75
  - !ruby/object:Gem::Dependency
56
76
  name: bundler
57
77
  requirement: !ruby/object:Gem::Requirement
@@ -86,7 +106,6 @@ files:
86
106
  - lib/rggen/core/base/feature_factory.rb
87
107
  - lib/rggen/core/base/feature_layer_extension.rb
88
108
  - lib/rggen/core/base/internal_struct.rb
89
- - lib/rggen/core/base/proxy_call.rb
90
109
  - lib/rggen/core/base/shared_context.rb
91
110
  - lib/rggen/core/builder.rb
92
111
  - lib/rggen/core/builder/builder.rb
@@ -99,6 +118,7 @@ files:
99
118
  - lib/rggen/core/builder/loader_registry.rb
100
119
  - lib/rggen/core/builder/output_component_registry.rb
101
120
  - lib/rggen/core/builder/plugin_manager.rb
121
+ - lib/rggen/core/builder/plugin_spec.rb
102
122
  - lib/rggen/core/builder/simple_feature_entry.rb
103
123
  - lib/rggen/core/cli.rb
104
124
  - lib/rggen/core/configuration.rb
@@ -112,6 +132,7 @@ files:
112
132
  - lib/rggen/core/configuration/json_loader.rb
113
133
  - lib/rggen/core/configuration/loader.rb
114
134
  - lib/rggen/core/configuration/ruby_loader.rb
135
+ - lib/rggen/core/configuration/toml_loader.rb
115
136
  - lib/rggen/core/configuration/yaml_loader.rb
116
137
  - lib/rggen/core/core_extensions/object.rb
117
138
  - lib/rggen/core/dsl.rb
@@ -129,18 +150,22 @@ files:
129
150
  - lib/rggen/core/input_base/json_loader.rb
130
151
  - lib/rggen/core/input_base/loader.rb
131
152
  - lib/rggen/core/input_base/property.rb
153
+ - lib/rggen/core/input_base/toml_loader.rb
132
154
  - lib/rggen/core/input_base/verifier.rb
133
155
  - lib/rggen/core/input_base/yaml_loader.rb
134
156
  - lib/rggen/core/options.rb
135
157
  - lib/rggen/core/output_base/code_generator.rb
136
158
  - lib/rggen/core/output_base/component.rb
137
159
  - lib/rggen/core/output_base/component_factory.rb
160
+ - lib/rggen/core/output_base/document_component_factory.rb
138
161
  - lib/rggen/core/output_base/erb_engine.rb
139
162
  - lib/rggen/core/output_base/feature.rb
140
163
  - lib/rggen/core/output_base/feature_factory.rb
141
164
  - lib/rggen/core/output_base/file_writer.rb
142
165
  - lib/rggen/core/output_base/raise_error.rb
166
+ - lib/rggen/core/output_base/source_file_component_factory.rb
143
167
  - lib/rggen/core/output_base/template_engine.rb
168
+ - lib/rggen/core/plugin.rb
144
169
  - lib/rggen/core/printers.rb
145
170
  - lib/rggen/core/register_map.rb
146
171
  - lib/rggen/core/register_map/component.rb
@@ -153,6 +178,7 @@ files:
153
178
  - lib/rggen/core/register_map/json_loader.rb
154
179
  - lib/rggen/core/register_map/loader.rb
155
180
  - lib/rggen/core/register_map/ruby_loader.rb
181
+ - lib/rggen/core/register_map/toml_loader.rb
156
182
  - lib/rggen/core/register_map/yaml_loader.rb
157
183
  - lib/rggen/core/utility/attribute_setter.rb
158
184
  - lib/rggen/core/utility/code_utility.rb
@@ -179,15 +205,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
179
205
  requirements:
180
206
  - - ">="
181
207
  - !ruby/object:Gem::Version
182
- version: '2.4'
208
+ version: '2.5'
183
209
  required_rubygems_version: !ruby/object:Gem::Requirement
184
210
  requirements:
185
211
  - - ">="
186
212
  - !ruby/object:Gem::Version
187
213
  version: '0'
188
214
  requirements: []
189
- rubygems_version: 3.1.2
215
+ rubygems_version: 3.2.3
190
216
  signing_key:
191
217
  specification_version: 4
192
- summary: rggen-core-0.22.0
218
+ summary: rggen-core-0.25.1
193
219
  test_files: []
@@ -1,18 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module RgGen
4
- module Core
5
- module Base
6
- class ProxyCall
7
- def initialize(receiver, method)
8
- @receiver = receiver
9
- @method = method
10
- end
11
-
12
- def call(*args, &block)
13
- @receiver.__send__(@method, *args, &block)
14
- end
15
- end
16
- end
17
- end
18
- end