rggen-core 0.18.0 → 0.23.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +1 -1
  3. data/README.md +2 -2
  4. data/exe/rggen +2 -2
  5. data/lib/rggen/core.rb +7 -5
  6. data/lib/rggen/core/base/component.rb +16 -7
  7. data/lib/rggen/core/base/component_factory.rb +12 -9
  8. data/lib/rggen/core/base/component_layer_extension.rb +194 -0
  9. data/lib/rggen/core/base/feature_layer_extension.rb +158 -0
  10. data/lib/rggen/core/builder/builder.rb +38 -52
  11. data/lib/rggen/core/builder/component_entry.rb +3 -2
  12. data/lib/rggen/core/builder/component_registry.rb +22 -17
  13. data/lib/rggen/core/builder/input_component_registry.rb +43 -10
  14. data/lib/rggen/core/builder/{category.rb → layer.rb} +27 -26
  15. data/lib/rggen/core/builder/loader_registry.rb +48 -0
  16. data/lib/rggen/core/builder/plugin_manager.rb +140 -0
  17. data/lib/rggen/core/configuration.rb +3 -2
  18. data/lib/rggen/core/configuration/component.rb +5 -0
  19. data/lib/rggen/core/configuration/component_factory.rb +1 -1
  20. data/lib/rggen/core/configuration/hash_loader.rb +4 -2
  21. data/lib/rggen/core/configuration/input_data.rb +15 -0
  22. data/lib/rggen/core/dsl.rb +3 -1
  23. data/lib/rggen/core/exceptions.rb +9 -4
  24. data/lib/rggen/core/generator.rb +3 -3
  25. data/lib/rggen/core/input_base/component_factory.rb +37 -6
  26. data/lib/rggen/core/input_base/feature.rb +4 -4
  27. data/lib/rggen/core/input_base/input_data.rb +13 -10
  28. data/lib/rggen/core/input_base/input_matcher.rb +15 -16
  29. data/lib/rggen/core/input_base/input_value_extractor.rb +34 -0
  30. data/lib/rggen/core/input_base/loader.rb +64 -21
  31. data/lib/rggen/core/input_base/yaml_loader.rb +22 -17
  32. data/lib/rggen/core/options.rb +18 -14
  33. data/lib/rggen/core/output_base/code_generator.rb +10 -23
  34. data/lib/rggen/core/output_base/component.rb +42 -39
  35. data/lib/rggen/core/output_base/component_factory.rb +4 -0
  36. data/lib/rggen/core/output_base/feature.rb +6 -7
  37. data/lib/rggen/core/printers.rb +11 -7
  38. data/lib/rggen/core/register_map.rb +6 -5
  39. data/lib/rggen/core/register_map/component.rb +4 -3
  40. data/lib/rggen/core/register_map/component_factory.rb +18 -1
  41. data/lib/rggen/core/register_map/feature.rb +2 -2
  42. data/lib/rggen/core/register_map/hash_loader.rb +61 -27
  43. data/lib/rggen/core/register_map/input_data.rb +30 -16
  44. data/lib/rggen/core/register_map/loader.rb +1 -1
  45. data/lib/rggen/core/register_map/ruby_loader.rb +1 -1
  46. data/lib/rggen/core/utility/code_utility.rb +8 -2
  47. data/lib/rggen/core/utility/error_utility.rb +33 -6
  48. data/lib/rggen/core/version.rb +1 -1
  49. metadata +12 -10
  50. data/lib/rggen/core/base/hierarchical_accessors.rb +0 -91
  51. data/lib/rggen/core/base/hierarchical_feature_accessors.rb +0 -83
  52. data/lib/rggen/core/builder/plugins.rb +0 -77
  53. data/lib/rggen/core/core_extensions/casecmp.rb +0 -12
@@ -1,91 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module RgGen
4
- module Core
5
- module Base
6
- module HierarchicalAccessors
7
- module RegisterMap
8
- def hierarchy
9
- :register_map
10
- end
11
-
12
- def register_blocks
13
- children
14
- end
15
-
16
- def registers
17
- register_blocks.flat_map(&:children)
18
- end
19
-
20
- def bit_fields
21
- registers.flat_map(&:children)
22
- end
23
- end
24
-
25
- module RegisterBlock
26
- def hierarchy
27
- :register_block
28
- end
29
-
30
- def register_map
31
- parent
32
- end
33
-
34
- def registers
35
- children
36
- end
37
-
38
- def bit_fields
39
- registers.flat_map(&:children)
40
- end
41
- end
42
-
43
- module Register
44
- def hierarchy
45
- :register
46
- end
47
-
48
- def register_map
49
- register_block.parent
50
- end
51
-
52
- def register_block
53
- parent
54
- end
55
-
56
- def bit_fields
57
- children
58
- end
59
- end
60
-
61
- module BitField
62
- def hierarchy
63
- :bit_field
64
- end
65
-
66
- def register_map
67
- register_block.parent
68
- end
69
-
70
- def register_block
71
- register.parent
72
- end
73
-
74
- def register
75
- parent
76
- end
77
- end
78
-
79
- private
80
-
81
- ACCESSOR_EXTENSIONS = [
82
- RegisterMap, RegisterBlock, Register, BitField
83
- ].freeze
84
-
85
- def define_hierarchical_accessors
86
- extend ACCESSOR_EXTENSIONS[level]
87
- end
88
- end
89
- end
90
- end
91
- end
@@ -1,83 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module RgGen
4
- module Core
5
- module Base
6
- module HierarchicalFeatureAccessors
7
- module RegisterMap
8
- def hierarchy
9
- :register_map
10
- end
11
-
12
- def register_map
13
- @component
14
- end
15
- end
16
-
17
- module RegisterBlock
18
- def hierarchy
19
- :register_block
20
- end
21
-
22
- def register_map
23
- register_block.parent
24
- end
25
-
26
- def register_block
27
- @component
28
- end
29
- end
30
-
31
- module Register
32
- def hierarchy
33
- :register
34
- end
35
-
36
- def register_map
37
- register_block.parent
38
- end
39
-
40
- def register_block
41
- register.parent
42
- end
43
-
44
- def register
45
- @component
46
- end
47
- end
48
-
49
- module BitField
50
- def hierarchy
51
- :bit_field
52
- end
53
-
54
- def register_map
55
- register_block.parent
56
- end
57
-
58
- def register_block
59
- register.parent
60
- end
61
-
62
- def register
63
- bit_field.parent
64
- end
65
-
66
- def bit_field
67
- @component
68
- end
69
- end
70
-
71
- private
72
-
73
- ACCESSOR_EXTENSIONS = [
74
- RegisterMap, RegisterBlock, Register, BitField
75
- ].freeze
76
-
77
- def define_hierarchical_accessors
78
- extend ACCESSOR_EXTENSIONS[@component.level]
79
- end
80
- end
81
- end
82
- end
83
- end
@@ -1,77 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module RgGen
4
- module Core
5
- module Builder
6
- class Plugin
7
- DEFAULT_PLUGIN_VERSION = '0.0.0'
8
-
9
- def initialize(name, module_or_version, &block)
10
- @name = name
11
- @block = block
12
- @version, @plugin_module =
13
- if module_or_version.is_a?(Module)
14
- [extract_version(module_or_version), module_or_version]
15
- else
16
- [module_or_version || DEFAULT_PLUGIN_VERSION]
17
- end
18
- end
19
-
20
- attr_reader :name
21
- attr_reader :version
22
-
23
- def default_setup(builder)
24
- @plugin_module &&
25
- begin
26
- @plugin_module.respond_to?(:default_setup) &&
27
- @plugin_module.default_setup(builder)
28
- end
29
- end
30
-
31
- def optional_setup(builder)
32
- @block &&
33
- if @plugin_module
34
- @plugin_module.instance_exec(builder, &@block)
35
- else
36
- @block.call(builder)
37
- end
38
- end
39
-
40
- def version_info
41
- "#{name} #{version}"
42
- end
43
-
44
- private
45
-
46
- def extract_version(plugin_module)
47
- if plugin_module.const_defined?(:VERSION)
48
- plugin_module.const_get(:VERSION)
49
- elsif plugin_module.respond_to?(:version)
50
- plugin_module.version
51
- else
52
- DEFAULT_PLUGIN_VERSION
53
- end
54
- end
55
- end
56
-
57
- class Plugins
58
- def initialize
59
- @plugins = []
60
- end
61
-
62
- def add(name, module_or_version, &block)
63
- @plugins << Plugin.new(name, module_or_version, &block)
64
- end
65
-
66
- def activate(builder)
67
- @plugins.each { |plugin| plugin.default_setup(builder) }
68
- @plugins.each { |plugin| plugin.optional_setup(builder) }
69
- end
70
-
71
- def version_info
72
- @plugins.map(&:version_info)
73
- end
74
- end
75
- end
76
- end
77
- end
@@ -1,12 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- if RUBY_VERSION < '2.4'
4
- casecmp = Module.new do
5
- def casecmp?(other)
6
- casecmp(other).zero?
7
- end
8
- end
9
-
10
- String.send(:include, casecmp)
11
- Symbol.send(:include, casecmp)
12
- end