rggen-core 0.21.0 → 0.25.0

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 (51) 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 +9 -2
  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 +29 -35
  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 +122 -0
  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 +3 -1
  21. data/lib/rggen/core/exceptions.rb +9 -4
  22. data/lib/rggen/core/facets.rb +1 -1
  23. data/lib/rggen/core/generator.rb +3 -3
  24. data/lib/rggen/core/input_base/component.rb +12 -0
  25. data/lib/rggen/core/input_base/component_factory.rb +1 -0
  26. data/lib/rggen/core/input_base/feature.rb +22 -8
  27. data/lib/rggen/core/input_base/input_data.rb +24 -17
  28. data/lib/rggen/core/input_base/input_matcher.rb +5 -5
  29. data/lib/rggen/core/input_base/loader.rb +15 -15
  30. data/lib/rggen/core/input_base/property.rb +17 -11
  31. data/lib/rggen/core/input_base/toml_loader.rb +16 -0
  32. data/lib/rggen/core/input_base/yaml_loader.rb +1 -18
  33. data/lib/rggen/core/options.rb +18 -14
  34. data/lib/rggen/core/output_base/code_generator.rb +5 -6
  35. data/lib/rggen/core/output_base/document_component_factory.rb +10 -0
  36. data/lib/rggen/core/output_base/feature.rb +15 -11
  37. data/lib/rggen/core/output_base/file_writer.rb +1 -1
  38. data/lib/rggen/core/output_base/source_file_component_factory.rb +15 -0
  39. data/lib/rggen/core/output_base/template_engine.rb +4 -5
  40. data/lib/rggen/core/plugin.rb +16 -0
  41. data/lib/rggen/core/printers.rb +11 -7
  42. data/lib/rggen/core/register_map.rb +4 -5
  43. data/lib/rggen/core/register_map/hash_loader.rb +6 -9
  44. data/lib/rggen/core/register_map/toml_loader.rb +18 -0
  45. data/lib/rggen/core/utility/attribute_setter.rb +5 -0
  46. data/lib/rggen/core/utility/code_utility/code_block.rb +11 -5
  47. data/lib/rggen/core/utility/error_utility.rb +33 -6
  48. data/lib/rggen/core/version.rb +2 -4
  49. metadata +33 -7
  50. data/lib/rggen/core/base/proxy_call.rb +0 -18
  51. data/lib/rggen/core/builder/plugins.rb +0 -79
@@ -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
@@ -1,79 +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, **options)
67
- options[:no_default_setup] ||
68
- @plugins.each { |plugin| plugin.default_setup(builder) }
69
- options[:no_optional_setup] ||
70
- @plugins.each { |plugin| plugin.optional_setup(builder) }
71
- end
72
-
73
- def version_info
74
- @plugins.map(&:version_info)
75
- end
76
- end
77
- end
78
- end
79
- end