rggen-core 0.22.0 → 0.25.1

Sign up to get free protection for your applications and to get access to all the features.
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