rggen-core 0.26.0 → 0.28.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.
- checksums.yaml +4 -4
- data/README.md +2 -1
- data/lib/rggen/core/builder/builder.rb +5 -10
- data/lib/rggen/core/builder/feature_registry.rb +31 -37
- data/lib/rggen/core/builder/input_component_registry.rb +10 -33
- data/lib/rggen/core/builder/layer.rb +2 -4
- data/lib/rggen/core/builder/list_feature_entry.rb +8 -4
- data/lib/rggen/core/builder/loader_registry.rb +7 -4
- data/lib/rggen/core/builder/plugin_manager.rb +57 -69
- data/lib/rggen/core/builder/plugin_spec.rb +19 -17
- data/lib/rggen/core/configuration/error.rb +2 -1
- data/lib/rggen/core/core_extensions/kernel.rb +13 -0
- data/lib/rggen/core/core_extensions/object.rb +2 -2
- data/lib/rggen/core/dsl.rb +4 -4
- data/lib/rggen/core/input_base/feature.rb +13 -15
- data/lib/rggen/core/input_base/feature_factory.rb +61 -11
- data/lib/rggen/core/input_base/input_matcher.rb +2 -2
- data/lib/rggen/core/input_base/input_value.rb +29 -7
- data/lib/rggen/core/input_base/property.rb +2 -2
- data/lib/rggen/core/input_base/yaml_loader.rb +102 -6
- data/lib/rggen/core/options.rb +1 -1
- data/lib/rggen/core/register_map/error.rb +2 -1
- data/lib/rggen/core/register_map/hash_loader.rb +4 -2
- data/lib/rggen/core/utility/regexp_patterns.rb +12 -0
- data/lib/rggen/core/utility/type_checker.rb +22 -0
- data/lib/rggen/core/version.rb +1 -1
- data/lib/rggen/core.rb +3 -1
- metadata +7 -6
- data/lib/rggen/core/plugin.rb +0 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 30286c1aefc400e1d6cda52dddc797fca2ad3a35fcf3a43578371a5b9a8fc4b0
|
4
|
+
data.tar.gz: e7bb012b70a143c1412eab481febce79e7083ab83c22136f3e52540a41e67c69
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a14bd1ce40c782d0628e55f23a6acffa1578598a421bae4a7127c4464800078ac3181504e0a53b829581cfba4820b56fbc07803cf3fe338097479f4d3aca646a
|
7
|
+
data.tar.gz: 524360603dae2839afe73e23a8c2cbedac3e2373e70a24e671d006977caf08dea6a5813d50a99a1724b3ab1a098b38134b0f653cbde2f9c6ee341d12596a73d0
|
data/README.md
CHANGED
@@ -37,7 +37,8 @@ $ gem install rggen-core
|
|
37
37
|
|
38
38
|
Feedbacks, bug reports, questions and etc. are wellcome! You can post them by using following ways:
|
39
39
|
|
40
|
-
* [GitHub Issue Tracker](https://github.com/rggen/rggen
|
40
|
+
* [GitHub Issue Tracker](https://github.com/rggen/rggen/issues)
|
41
|
+
* [GitHub Discussions](https://github.com/rggen/rggen/discussions)
|
41
42
|
* [Chat Room](https://gitter.im/rggen/rggen)
|
42
43
|
* [Mailing List](https://groups.google.com/d/forum/rggen)
|
43
44
|
* [Mail](mailto:rggen@googlegroups.com)
|
@@ -24,11 +24,10 @@ module RgGen
|
|
24
24
|
|
25
25
|
[
|
26
26
|
:register_loader, :register_loaders,
|
27
|
-
:
|
27
|
+
:setup_loader, :define_value_extractor
|
28
28
|
].each do |method_name|
|
29
29
|
define_method(method_name) do |component, *args, &block|
|
30
|
-
@component_registries[:input][component]
|
31
|
-
.__send__(__method__, *args, &block)
|
30
|
+
@component_registries[:input][component].__send__(__method__, *args, &block)
|
32
31
|
end
|
33
32
|
end
|
34
33
|
|
@@ -61,12 +60,8 @@ module RgGen
|
|
61
60
|
@layers[layer].enable(*args)
|
62
61
|
end
|
63
62
|
|
64
|
-
def
|
65
|
-
@layers.each_value(&:
|
66
|
-
end
|
67
|
-
|
68
|
-
def disable(layer, *args)
|
69
|
-
@layers.key?(layer) && @layers[layer].disable(*args)
|
63
|
+
def enable_all
|
64
|
+
@layers.each_value(&:enable_all)
|
70
65
|
end
|
71
66
|
|
72
67
|
def build_factory(type, component)
|
@@ -94,7 +89,7 @@ module RgGen
|
|
94
89
|
|
95
90
|
def_delegator :plugin_manager, :load_plugin
|
96
91
|
def_delegator :plugin_manager, :load_plugins
|
97
|
-
def_delegator :plugin_manager, :
|
92
|
+
def_delegator :plugin_manager, :setup_plugin
|
98
93
|
|
99
94
|
private
|
100
95
|
|
@@ -28,68 +28,61 @@ module RgGen
|
|
28
28
|
|
29
29
|
def enable(feature_or_list_names, feature_names = nil)
|
30
30
|
if feature_names
|
31
|
-
|
32
|
-
|
31
|
+
list_name = feature_or_list_names
|
32
|
+
(@enabled_features[list_name] ||= []).merge!(Array(feature_names))
|
33
33
|
else
|
34
34
|
Array(feature_or_list_names).each do |name|
|
35
|
-
@enabled_features[name]
|
35
|
+
@enabled_features.key?(name) || (@enabled_features[name] = nil)
|
36
36
|
end
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
40
|
-
def
|
41
|
-
|
42
|
-
@enabled_features[list_name] || []
|
43
|
-
else
|
44
|
-
@enabled_features.keys
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
def disable(feature_or_list_names = nil, feature_names = nil)
|
49
|
-
if feature_names
|
50
|
-
@enabled_features[feature_or_list_names]
|
51
|
-
&.delete_if { |key, _| Array(feature_names).include?(key) }
|
52
|
-
elsif feature_or_list_names
|
53
|
-
Array(feature_or_list_names)
|
54
|
-
.each(&@enabled_features.method(:delete))
|
55
|
-
else
|
56
|
-
@enabled_features.clear
|
57
|
-
end
|
40
|
+
def enable_all
|
41
|
+
@enabled_features.clear
|
58
42
|
end
|
59
43
|
|
60
44
|
def delete(feature_or_list_names = nil, feature_names = nil)
|
61
45
|
if feature_names
|
62
46
|
@feature_entries[feature_or_list_names]&.delete(feature_names)
|
63
47
|
elsif feature_or_list_names
|
64
|
-
Array(feature_or_list_names)
|
65
|
-
.each(&@feature_entries.method(:delete))
|
48
|
+
Array(feature_or_list_names).each(&@feature_entries.method(:delete))
|
66
49
|
else
|
67
50
|
@feature_entries.clear
|
68
51
|
end
|
69
52
|
end
|
70
53
|
|
71
54
|
def simple_feature?(feature_name)
|
72
|
-
|
55
|
+
@feature_entries[feature_name]&.match_entry_type?(:simple) || false
|
73
56
|
end
|
74
57
|
|
75
58
|
def list_feature?(list_name, feature_name = nil)
|
76
|
-
return false unless
|
59
|
+
return false unless @feature_entries[list_name]&.match_entry_type?(:list)
|
77
60
|
return true unless feature_name
|
78
|
-
|
61
|
+
@feature_entries[list_name].feature?(feature_name)
|
79
62
|
end
|
80
63
|
|
81
64
|
def feature?(feature_or_list_name, feature_name = nil)
|
82
65
|
if feature_name
|
83
66
|
list_feature?(feature_or_list_name, feature_name)
|
84
67
|
else
|
85
|
-
simple_feature?(feature_or_list_name) ||
|
86
|
-
|
68
|
+
simple_feature?(feature_or_list_name) || list_feature?(feature_or_list_name)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
def enabled_features(list_name = nil)
|
73
|
+
if list_name
|
74
|
+
enabled_list_features(list_name)
|
75
|
+
else
|
76
|
+
@enabled_features.empty? && @feature_entries.keys ||
|
77
|
+
@enabled_features.keys & @feature_entries.keys
|
87
78
|
end
|
88
79
|
end
|
89
80
|
|
90
81
|
def build_factories
|
82
|
+
target_features =
|
83
|
+
(@enabled_features.empty? && @feature_entries || @enabled_features).keys
|
91
84
|
@feature_entries
|
92
|
-
.slice(
|
85
|
+
.slice(*target_features)
|
93
86
|
.transform_values(&method(:build_factory))
|
94
87
|
end
|
95
88
|
|
@@ -105,16 +98,17 @@ module RgGen
|
|
105
98
|
@feature_entries[name] = entry
|
106
99
|
end
|
107
100
|
|
108
|
-
def
|
109
|
-
return
|
110
|
-
|
111
|
-
@enabled_features
|
101
|
+
def enabled_list_features(list_name)
|
102
|
+
return [] unless enabled_list?(list_name)
|
103
|
+
features = @feature_entries[list_name].features
|
104
|
+
(@enabled_features[list_name] || features) & features
|
112
105
|
end
|
113
106
|
|
114
|
-
def
|
115
|
-
return false unless
|
116
|
-
|
117
|
-
@enabled_features
|
107
|
+
def enabled_list?(list_name)
|
108
|
+
return false unless list_feature?(list_name)
|
109
|
+
return true if @enabled_features.empty?
|
110
|
+
return true if @enabled_features.key?(list_name)
|
111
|
+
false
|
118
112
|
end
|
119
113
|
|
120
114
|
def build_factory(entry)
|
@@ -6,45 +6,26 @@ module RgGen
|
|
6
6
|
class InputComponentRegistry < ComponentRegistry
|
7
7
|
def initialize(name, builder)
|
8
8
|
super
|
9
|
-
@loader_registries =
|
9
|
+
@loader_registries = Hash.new do |h, k|
|
10
|
+
h[k] = LoaderRegistry.new
|
11
|
+
end
|
10
12
|
end
|
11
13
|
|
12
14
|
def register_loader(loader_type, loader)
|
13
|
-
|
15
|
+
@loader_registries[loader_type].register_loader(loader)
|
14
16
|
end
|
15
17
|
|
16
18
|
def register_loaders(loader_type, loaders)
|
17
|
-
|
19
|
+
@loader_registries[loader_type].register_loaders(loaders)
|
18
20
|
end
|
19
21
|
|
20
|
-
def
|
21
|
-
|
22
|
-
if value
|
23
|
-
[layers_or_value, value]
|
24
|
-
else
|
25
|
-
[nil, layers_or_value]
|
26
|
-
end
|
27
|
-
loader_registry(loader_type).define_value_extractor(layers, value, &body)
|
28
|
-
end
|
29
|
-
|
30
|
-
def ignore_value(loader_type, layers_or_value, value = nil)
|
31
|
-
layers, value =
|
32
|
-
if value
|
33
|
-
[layers_or_value, value]
|
34
|
-
else
|
35
|
-
[nil, layers_or_value]
|
36
|
-
end
|
37
|
-
loader_registry(loader_type).ignore_value(layers, value)
|
22
|
+
def setup_loader(loader_type)
|
23
|
+
block_given? && yield(@loader_registries[loader_type])
|
38
24
|
end
|
39
25
|
|
40
|
-
def
|
41
|
-
|
42
|
-
|
43
|
-
[layers_or_values, values]
|
44
|
-
else
|
45
|
-
[nil, layers_or_values]
|
46
|
-
end
|
47
|
-
loader_registry(loader_type).ignore_values(layers, values)
|
26
|
+
def define_value_extractor(loader_type, layers_or_value, value = nil, &body)
|
27
|
+
@loader_registries[loader_type]
|
28
|
+
.define_value_extractor(layers_or_value, value, &body)
|
48
29
|
end
|
49
30
|
|
50
31
|
def build_factory
|
@@ -55,10 +36,6 @@ module RgGen
|
|
55
36
|
|
56
37
|
private
|
57
38
|
|
58
|
-
def loader_registry(loader_type)
|
59
|
-
@loader_registries[loader_type] ||= LoaderRegistry.new
|
60
|
-
end
|
61
|
-
|
62
39
|
def build_loaders
|
63
40
|
@loader_registries.values.flat_map(&:create_loaders)
|
64
41
|
end
|
@@ -90,10 +90,8 @@ module RgGen
|
|
90
90
|
end
|
91
91
|
end
|
92
92
|
|
93
|
-
def
|
94
|
-
@feature_registries.each_value
|
95
|
-
registry.disable(*[feature_or_list_names, feature_names].compact)
|
96
|
-
end
|
93
|
+
def enable_all
|
94
|
+
@feature_registries.each_value(&:enable_all)
|
97
95
|
end
|
98
96
|
|
99
97
|
def delete(feature_or_list_names = nil, feature_names = nil)
|
@@ -32,9 +32,9 @@ module RgGen
|
|
32
32
|
|
33
33
|
alias_method :factory, :define_factory
|
34
34
|
|
35
|
-
def build_factory(
|
35
|
+
def build_factory(targets)
|
36
36
|
@factory.new(@name) do |f|
|
37
|
-
f.target_features(target_features(
|
37
|
+
f.target_features(target_features(targets))
|
38
38
|
f.target_feature(@default_feature)
|
39
39
|
end
|
40
40
|
end
|
@@ -77,6 +77,10 @@ module RgGen
|
|
77
77
|
@features.key?(feature)
|
78
78
|
end
|
79
79
|
|
80
|
+
def features
|
81
|
+
@features.keys
|
82
|
+
end
|
83
|
+
|
80
84
|
private
|
81
85
|
|
82
86
|
def attach_shared_context(context)
|
@@ -85,8 +89,8 @@ module RgGen
|
|
85
89
|
end
|
86
90
|
end
|
87
91
|
|
88
|
-
def target_features(
|
89
|
-
@features.slice(*
|
92
|
+
def target_features(targets)
|
93
|
+
targets && @features.slice(*targets) || @features
|
90
94
|
end
|
91
95
|
end
|
92
96
|
end
|
@@ -11,22 +11,25 @@ module RgGen
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def register_loader(loader)
|
14
|
-
|
14
|
+
@loaders << loader
|
15
15
|
end
|
16
16
|
|
17
17
|
def register_loaders(loaders)
|
18
18
|
@loaders.concat(Array(loaders))
|
19
19
|
end
|
20
20
|
|
21
|
-
def define_value_extractor(
|
21
|
+
def define_value_extractor(layers_or_value, value = nil, &body)
|
22
|
+
value, layers = [value, layers_or_value].compact
|
22
23
|
@extractors << create_extractor(layers, value, &body)
|
23
24
|
end
|
24
25
|
|
25
|
-
def ignore_value(
|
26
|
+
def ignore_value(layers_or_value, value = nil)
|
27
|
+
value, layers = [value, layers_or_value].compact
|
26
28
|
ignore_values(layers, [value])
|
27
29
|
end
|
28
30
|
|
29
|
-
def ignore_values(
|
31
|
+
def ignore_values(layers_or_values, values = nil)
|
32
|
+
values, layers = [values, layers_or_values].compact
|
30
33
|
[layers].flatten.each do |layer|
|
31
34
|
(@ignore_values[layer] ||= []).concat(Array(values))
|
32
35
|
end
|
@@ -3,81 +3,65 @@
|
|
3
3
|
module RgGen
|
4
4
|
module Core
|
5
5
|
module Builder
|
6
|
-
|
7
|
-
def initialize(plugin_module, &block)
|
8
|
-
@plugin_module = plugin_module
|
9
|
-
@block = block
|
10
|
-
end
|
11
|
-
|
12
|
-
def default_setup(builder)
|
13
|
-
@plugin_module.plugin_spec.activate(builder)
|
14
|
-
end
|
15
|
-
|
16
|
-
def optional_setup(builder)
|
17
|
-
@block && @plugin_module.instance_exec(builder, &@block)
|
18
|
-
end
|
19
|
-
|
20
|
-
def version_info
|
21
|
-
@plugin_module.plugin_spec.version_info
|
22
|
-
end
|
23
|
-
end
|
6
|
+
DEFAULT_PLUGSINS = 'rggen/default'
|
24
7
|
|
25
8
|
class PluginInfo
|
26
|
-
attr_reader :
|
27
|
-
attr_reader :
|
28
|
-
attr_reader :gem_name
|
9
|
+
attr_reader :path
|
10
|
+
attr_reader :gemname
|
29
11
|
attr_reader :version
|
30
12
|
|
31
|
-
def parse(
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
13
|
+
def self.parse(path_or_name, version)
|
14
|
+
info = new
|
15
|
+
info.parse(path_or_name.to_s.strip, version)
|
16
|
+
info
|
17
|
+
end
|
18
|
+
|
19
|
+
def parse(path_or_name, version)
|
20
|
+
@name, @path, @gemname, @version =
|
21
|
+
if plugin_path?(path_or_name)
|
22
|
+
[nil, path_or_name, *find_gemspec_by_path(path_or_name)]
|
36
23
|
else
|
37
24
|
[
|
38
|
-
|
39
|
-
|
25
|
+
path_or_name, get_plugin_path(path_or_name),
|
26
|
+
get_gemname(path_or_name), version
|
40
27
|
]
|
41
28
|
end
|
42
|
-
self
|
43
29
|
end
|
44
30
|
|
45
31
|
def to_s
|
46
|
-
if name && version
|
47
|
-
"#{name} (#{version})"
|
48
|
-
elsif name
|
49
|
-
name
|
32
|
+
if @name && @version
|
33
|
+
"#{@name} (#{@version})"
|
34
|
+
elsif @name
|
35
|
+
@name
|
50
36
|
else
|
51
|
-
|
37
|
+
@path
|
52
38
|
end
|
53
39
|
end
|
54
40
|
|
55
41
|
private
|
56
42
|
|
57
|
-
def
|
58
|
-
File.ext(
|
59
|
-
File.basename(setup_path_or_name, '.*') == 'setup'
|
43
|
+
def plugin_path?(path_or_name)
|
44
|
+
path_or_name == DEFAULT_PLUGSINS || File.ext(path_or_name) == 'rb'
|
60
45
|
end
|
61
46
|
|
62
|
-
def
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
gemspec && [gemspec.name, gemspec.version]
|
47
|
+
def find_gemspec_by_path(path)
|
48
|
+
Gem::Specification
|
49
|
+
.each.find { |spec| match_gemspec_path?(spec, path) }
|
50
|
+
.then { |spec| spec && [spec.name, spec.version] }
|
67
51
|
end
|
68
52
|
|
69
|
-
def
|
70
|
-
gemspec.full_require_paths.any?(&
|
53
|
+
def match_gemspec_path?(gemspec, path)
|
54
|
+
gemspec.full_require_paths.any?(&path.method(:start_with?))
|
71
55
|
end
|
72
56
|
|
73
|
-
def
|
74
|
-
|
57
|
+
def get_plugin_path(name)
|
58
|
+
base_name, sub_name = name.split('/', 2)
|
59
|
+
base_name = base_name.sub(/^rggen[-_]/, '').tr('-', '_')
|
60
|
+
File.join(*['rggen', base_name, sub_name].compact)
|
75
61
|
end
|
76
62
|
|
77
|
-
def
|
78
|
-
|
79
|
-
base = base.sub(/^rggen[-_]/, '').tr('-', '_')
|
80
|
-
File.join(*['rggen', base, sub_directory, 'setup'].compact)
|
63
|
+
def get_gemname(name)
|
64
|
+
name.split('/', 2).first
|
81
65
|
end
|
82
66
|
end
|
83
67
|
|
@@ -87,9 +71,9 @@ module RgGen
|
|
87
71
|
@plugins = []
|
88
72
|
end
|
89
73
|
|
90
|
-
def load_plugin(
|
91
|
-
info = PluginInfo.
|
92
|
-
|
74
|
+
def load_plugin(path_or_name, version = nil)
|
75
|
+
info = PluginInfo.parse(path_or_name, version)
|
76
|
+
read_plugin_file(info)
|
93
77
|
end
|
94
78
|
|
95
79
|
def load_plugins(plugins, no_default_plugins, activation = true)
|
@@ -99,17 +83,19 @@ module RgGen
|
|
99
83
|
activation && activate_plugins
|
100
84
|
end
|
101
85
|
|
102
|
-
def
|
103
|
-
|
104
|
-
|
105
|
-
|
86
|
+
def setup_plugin(plugin_name, &block)
|
87
|
+
@plugins << PluginSpec.new(plugin_name, &block)
|
88
|
+
end
|
89
|
+
|
90
|
+
def activate_plugins
|
91
|
+
do_normal_activation
|
92
|
+
do_addtional_activation
|
106
93
|
end
|
107
94
|
|
108
|
-
def
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
@plugins.each { |plugin| plugin.optional_setup(@builder) }
|
95
|
+
def activate_plugin_by_name(plugin_name)
|
96
|
+
target_plugin = @plugins.find { |plugin| plugin.name == plugin_name }
|
97
|
+
target_plugin&.activate(@builder)
|
98
|
+
target_plugin&.activate_additionally(@builder)
|
113
99
|
end
|
114
100
|
|
115
101
|
def version_info
|
@@ -118,9 +104,9 @@ module RgGen
|
|
118
104
|
|
119
105
|
private
|
120
106
|
|
121
|
-
def
|
122
|
-
info.
|
123
|
-
require info.
|
107
|
+
def read_plugin_file(info)
|
108
|
+
info.gemname && gem(info.gemname, info.version)
|
109
|
+
require info.path
|
124
110
|
rescue ::LoadError
|
125
111
|
raise Core::PluginError.new("cannot load such plugin: #{info}")
|
126
112
|
end
|
@@ -133,8 +119,6 @@ module RgGen
|
|
133
119
|
]
|
134
120
|
end
|
135
121
|
|
136
|
-
DEFAULT_PLUGSINS = 'rggen/setup'
|
137
|
-
|
138
122
|
def default_plugins(no_default_plugins)
|
139
123
|
load_default_plugins?(no_default_plugins) && DEFAULT_PLUGSINS || nil
|
140
124
|
end
|
@@ -153,8 +137,12 @@ module RgGen
|
|
153
137
|
&.map { |entry| entry.split(',', 2) }
|
154
138
|
end
|
155
139
|
|
156
|
-
def
|
157
|
-
|
140
|
+
def do_normal_activation
|
141
|
+
@plugins.each { |plugin| plugin.activate(@builder) }
|
142
|
+
end
|
143
|
+
|
144
|
+
def do_addtional_activation
|
145
|
+
@plugins.each { |plugin| plugin.activate_additionally(@builder) }
|
158
146
|
end
|
159
147
|
end
|
160
148
|
end
|
@@ -4,14 +4,16 @@ module RgGen
|
|
4
4
|
module Core
|
5
5
|
module Builder
|
6
6
|
class PluginSpec
|
7
|
-
def initialize(name
|
7
|
+
def initialize(name)
|
8
8
|
@name = name
|
9
|
-
@plugin_module = plugin_module
|
10
9
|
@component_registrations = []
|
11
10
|
@loader_registrations = []
|
12
11
|
@files = []
|
12
|
+
block_given? && yield(self)
|
13
13
|
end
|
14
14
|
|
15
|
+
attr_reader :name
|
16
|
+
|
15
17
|
def version(value = nil)
|
16
18
|
@version = value if value
|
17
19
|
version_value
|
@@ -25,13 +27,8 @@ module RgGen
|
|
25
27
|
@component_registrations << [component, layers, body]
|
26
28
|
end
|
27
29
|
|
28
|
-
def
|
29
|
-
@loader_registrations << [component, loader_type,
|
30
|
-
end
|
31
|
-
|
32
|
-
def register_loaders(component, loader_type, loaders)
|
33
|
-
Array(loaders)
|
34
|
-
.each { |loader| register_loader(component, loader_type, loader) }
|
30
|
+
def setup_loader(component, loader_type, &body)
|
31
|
+
@loader_registrations << [component, loader_type, body]
|
35
32
|
end
|
36
33
|
|
37
34
|
def register_files(files)
|
@@ -41,23 +38,26 @@ module RgGen
|
|
41
38
|
|
42
39
|
alias_method :files, :register_files
|
43
40
|
|
41
|
+
def addtional_setup(&body)
|
42
|
+
@addtional_setup = body
|
43
|
+
end
|
44
|
+
|
44
45
|
def activate(builder)
|
45
46
|
activate_components(builder)
|
46
47
|
activate_loaders(builder)
|
47
48
|
load_files
|
48
49
|
end
|
49
50
|
|
51
|
+
def activate_additionally(builder)
|
52
|
+
@addtional_setup&.call(builder)
|
53
|
+
end
|
54
|
+
|
50
55
|
private
|
51
56
|
|
52
57
|
DEFAULT_VERSION = '0.0.0'
|
53
58
|
|
54
59
|
def version_value
|
55
|
-
@version ||
|
56
|
-
end
|
57
|
-
|
58
|
-
def const_version
|
59
|
-
@plugin_module.const_defined?(:VERSION) &&
|
60
|
-
@plugin_module.const_get(:VERSION)
|
60
|
+
@version || DEFAULT_VERSION
|
61
61
|
end
|
62
62
|
|
63
63
|
def activate_components(builder)
|
@@ -69,8 +69,10 @@ module RgGen
|
|
69
69
|
end
|
70
70
|
|
71
71
|
def activate_loaders(builder)
|
72
|
-
@loader_registrations.each do |component, loader_type,
|
73
|
-
builder
|
72
|
+
@loader_registrations.each do |component, loader_type, body|
|
73
|
+
builder
|
74
|
+
.input_component_registry(component)
|
75
|
+
.setup_loader(loader_type, &body)
|
74
76
|
end
|
75
77
|
end
|
76
78
|
|
@@ -7,7 +7,8 @@ module RgGen
|
|
7
7
|
end
|
8
8
|
|
9
9
|
module RaiseError
|
10
|
-
def error(message,
|
10
|
+
def error(message, input_value = nil)
|
11
|
+
position = input_value.position if input_value.respond_to?(:position)
|
11
12
|
raise ConfigurationError.new(message, position || @position)
|
12
13
|
end
|
13
14
|
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Kernel
|
4
|
+
alias_method :__orignal_Integer, :Integer
|
5
|
+
|
6
|
+
def Integer(arg, base = 0, exception: true)
|
7
|
+
arg = arg.__getobj__ if arg.is_a?(::Delegator)
|
8
|
+
__orignal_Integer(arg, base, exception: exception)
|
9
|
+
end
|
10
|
+
|
11
|
+
module_function :__orignal_Integer
|
12
|
+
module_function :Integer
|
13
|
+
end
|
@@ -4,8 +4,8 @@ class Object
|
|
4
4
|
def export_instance_variable(variable, to)
|
5
5
|
instance_variable_defined?(variable) &&
|
6
6
|
instance_variable_get(variable)
|
7
|
-
.
|
8
|
-
.
|
7
|
+
.then { |v| block_given? ? yield(v) : v }
|
8
|
+
.then { |v| to.instance_variable_set(variable, v) }
|
9
9
|
end
|
10
10
|
|
11
11
|
def singleton_exec(*args, &block)
|
data/lib/rggen/core/dsl.rb
CHANGED
@@ -11,17 +11,17 @@ module RgGen
|
|
11
11
|
:input_component_registry,
|
12
12
|
:output_component_registry,
|
13
13
|
:register_loader,
|
14
|
+
:setup_loader,
|
15
|
+
:load_plugin,
|
14
16
|
:define_loader,
|
15
17
|
:define_simple_feature,
|
16
18
|
:define_list_feature,
|
17
19
|
:define_list_item_feature,
|
18
20
|
:define_value_extractor,
|
19
21
|
:enable,
|
20
|
-
:
|
21
|
-
:disable,
|
22
|
+
:enable_all,
|
22
23
|
:delete,
|
23
|
-
:
|
24
|
-
:load_plugin
|
24
|
+
:setup_plugin
|
25
25
|
].each do |method_name|
|
26
26
|
def_delegator :'RgGen.builder', method_name
|
27
27
|
end
|
@@ -5,6 +5,7 @@ module RgGen
|
|
5
5
|
module InputBase
|
6
6
|
class Feature < Base::Feature
|
7
7
|
include Utility::RegexpPatterns
|
8
|
+
include Utility::TypeChecker
|
8
9
|
|
9
10
|
class << self
|
10
11
|
def property(name, **options, &body)
|
@@ -50,8 +51,7 @@ module RgGen
|
|
50
51
|
end
|
51
52
|
|
52
53
|
def input_pattern(pattern_or_patterns, **options, &converter)
|
53
|
-
@input_matcher =
|
54
|
-
InputMatcher.new(pattern_or_patterns, **options, &converter)
|
54
|
+
@input_matcher = InputMatcher.new(pattern_or_patterns, **options, &converter)
|
55
55
|
end
|
56
56
|
|
57
57
|
attr_reader :input_matcher
|
@@ -88,9 +88,8 @@ module RgGen
|
|
88
88
|
end
|
89
89
|
|
90
90
|
def export_verifiers(subclass)
|
91
|
-
subclass
|
92
|
-
:@verifiers, @verifiers.transform_values(&:dup)
|
93
|
-
)
|
91
|
+
subclass
|
92
|
+
.instance_variable_set(:@verifiers, @verifiers.transform_values(&:dup))
|
94
93
|
end
|
95
94
|
end
|
96
95
|
|
@@ -104,9 +103,7 @@ module RgGen
|
|
104
103
|
end
|
105
104
|
|
106
105
|
def post_build
|
107
|
-
self.class.post_builders&.each
|
108
|
-
instance_exec(&post_builder)
|
109
|
-
end
|
106
|
+
self.class.post_builders&.each { |block| instance_exec(&block) }
|
110
107
|
end
|
111
108
|
|
112
109
|
def verify(scope)
|
@@ -114,9 +111,7 @@ module RgGen
|
|
114
111
|
end
|
115
112
|
|
116
113
|
def printables
|
117
|
-
helper
|
118
|
-
.printables
|
119
|
-
&.map { |name, body| [name, printable(name, &body)] }
|
114
|
+
helper.printables&.map { |name, body| [name, printable(name, &body)] }
|
120
115
|
end
|
121
116
|
|
122
117
|
def printable?
|
@@ -133,10 +128,13 @@ module RgGen
|
|
133
128
|
|
134
129
|
def do_build(args)
|
135
130
|
@position = args.last.position
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
131
|
+
match_automatically? && match_pattern(args.last)
|
132
|
+
execute_build_blocks(args)
|
133
|
+
end
|
134
|
+
|
135
|
+
def execute_build_blocks(args)
|
136
|
+
args = [*args, args.last.options] if args.last.with_options?
|
137
|
+
self.class.builders.each { |builder| instance_exec(*args, &builder) }
|
140
138
|
end
|
141
139
|
|
142
140
|
attr_reader :position
|
@@ -4,6 +4,8 @@ module RgGen
|
|
4
4
|
module Core
|
5
5
|
module InputBase
|
6
6
|
class FeatureFactory < Base::FeatureFactory
|
7
|
+
include Utility::TypeChecker
|
8
|
+
|
7
9
|
class << self
|
8
10
|
def convert_value(&block)
|
9
11
|
@value_converter = block
|
@@ -15,10 +17,18 @@ module RgGen
|
|
15
17
|
@default_value = block if block_given?
|
16
18
|
@default_value
|
17
19
|
end
|
20
|
+
|
21
|
+
def allow_options
|
22
|
+
@allow_options = true
|
23
|
+
end
|
24
|
+
|
25
|
+
def allow_options?
|
26
|
+
@allow_options || false
|
27
|
+
end
|
18
28
|
end
|
19
29
|
|
20
30
|
def create(component, *args)
|
21
|
-
input_value =
|
31
|
+
input_value = process_input_value(args.last)
|
22
32
|
create_feature(component, *args[0..-2], input_value) do |feature|
|
23
33
|
build_feature(feature, input_value)
|
24
34
|
feature.verify(:feature)
|
@@ -35,20 +45,60 @@ module RgGen
|
|
35
45
|
|
36
46
|
private
|
37
47
|
|
38
|
-
def
|
39
|
-
|
40
|
-
|
41
|
-
|
48
|
+
def process_input_value(input_value)
|
49
|
+
if passive_feature_factory?
|
50
|
+
input_value
|
51
|
+
elsif self.class.allow_options?
|
52
|
+
process_input_value_with_options(input_value)
|
53
|
+
else
|
54
|
+
process_input_value_without_options(input_value)
|
55
|
+
end
|
42
56
|
end
|
43
57
|
|
44
|
-
def
|
45
|
-
|
46
|
-
if input_value
|
47
|
-
|
58
|
+
def process_input_value_with_options(input_value)
|
59
|
+
value, options =
|
60
|
+
if string?(input_value)
|
61
|
+
parse_string_value(input_value)
|
48
62
|
else
|
49
|
-
|
63
|
+
Array(input_value).then { |values| [values.first, values[1..]] }
|
50
64
|
end
|
51
|
-
|
65
|
+
value = convert_value(value, input_value.position) || value
|
66
|
+
InputValue.new(value, options || [], input_value.position)
|
67
|
+
end
|
68
|
+
|
69
|
+
def parse_string_value(input_value)
|
70
|
+
value, options = split_string(input_value, ':', 2)
|
71
|
+
[value, parse_option_string(options)]
|
72
|
+
end
|
73
|
+
|
74
|
+
def parse_option_string(option_string)
|
75
|
+
split_string(option_string, /[,\n]/, 0)&.map do |option|
|
76
|
+
name, value = split_string(option, ':', 2)
|
77
|
+
value && [name, value] || name
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
def split_string(string, separator, limit)
|
82
|
+
string&.split(separator, limit)&.map(&:strip)
|
83
|
+
end
|
84
|
+
|
85
|
+
def process_input_value_without_options(input_value)
|
86
|
+
value = convert_value(input_value.value, input_value.position)
|
87
|
+
value && InputValue.new(value, input_value.position) || input_value
|
88
|
+
end
|
89
|
+
|
90
|
+
def convert_value(value, position)
|
91
|
+
if empty_value?(value)
|
92
|
+
evaluate_defalt_value(position)
|
93
|
+
else
|
94
|
+
convert(value, position)
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
def empty_value?(value)
|
99
|
+
return true if value.nil?
|
100
|
+
return value.empty? if value.respond_to?(:empty?)
|
101
|
+
false
|
52
102
|
end
|
53
103
|
|
54
104
|
def evaluate_defalt_value(position)
|
@@ -13,8 +13,8 @@ module RgGen
|
|
13
13
|
def match(rhs)
|
14
14
|
rhs
|
15
15
|
.to_s
|
16
|
-
.
|
17
|
-
.
|
16
|
+
.then { |s| ignore_blanks? && delete_blanks(s) || s }
|
17
|
+
.then(&method(:match_patterns))
|
18
18
|
end
|
19
19
|
|
20
20
|
def match_automatically?
|
@@ -3,21 +3,43 @@
|
|
3
3
|
module RgGen
|
4
4
|
module Core
|
5
5
|
module InputBase
|
6
|
-
class InputValue
|
7
|
-
|
8
|
-
|
9
|
-
|
6
|
+
class InputValue < ::SimpleDelegator
|
7
|
+
NoValue = Object.new
|
8
|
+
|
9
|
+
def initialize(value, options_or_position, position = NoValue)
|
10
|
+
super((value.is_a?(String) && value.strip) || value)
|
11
|
+
@options, @position =
|
12
|
+
if position.equal?(NoValue)
|
13
|
+
[NoValue, options_or_position]
|
14
|
+
else
|
15
|
+
[options_or_position, position]
|
16
|
+
end
|
10
17
|
end
|
11
18
|
|
12
|
-
|
19
|
+
alias_method :value, :__getobj__
|
20
|
+
|
13
21
|
attr_reader :position
|
22
|
+
attr_reader :options
|
23
|
+
|
24
|
+
def ==(other)
|
25
|
+
__getobj__ == other ||
|
26
|
+
other.is_a?(InputValue) && __getobj__ == other.__getobj__
|
27
|
+
end
|
28
|
+
|
29
|
+
def match_class?(klass)
|
30
|
+
__getobj__.is_a?(klass)
|
31
|
+
end
|
14
32
|
|
15
33
|
def empty_value?
|
16
|
-
return true if
|
17
|
-
return true if
|
34
|
+
return true if value.nil?
|
35
|
+
return true if value.respond_to?(:empty?) && value.empty?
|
18
36
|
false
|
19
37
|
end
|
20
38
|
|
39
|
+
def with_options?
|
40
|
+
!@options.equal?(NoValue)
|
41
|
+
end
|
42
|
+
|
21
43
|
def available?
|
22
44
|
true
|
23
45
|
end
|
@@ -80,8 +80,8 @@ module RgGen
|
|
80
80
|
|
81
81
|
def set_initial_value(feature, varible_name)
|
82
82
|
@options[:initial]
|
83
|
-
.
|
84
|
-
.
|
83
|
+
.then { |v| evaluate_default_initial_value(feature, v) }
|
84
|
+
.then { |v| feature.instance_variable_set(varible_name, v) }
|
85
85
|
end
|
86
86
|
|
87
87
|
def evaluate_default_initial_value(feature, value)
|
@@ -4,15 +4,111 @@ module RgGen
|
|
4
4
|
module Core
|
5
5
|
module InputBase
|
6
6
|
module YAMLLoader
|
7
|
+
Position = Struct.new(:file, :line, :column) do
|
8
|
+
def to_s
|
9
|
+
"file #{file} line #{line} column #{column}"
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
module PsychExtension
|
14
|
+
refine ::Psych::Nodes::Node do
|
15
|
+
attr_accessor :filename
|
16
|
+
|
17
|
+
attr_writer :mapping_key
|
18
|
+
|
19
|
+
def mapping_key?
|
20
|
+
@mapping_key || false
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
using PsychExtension
|
26
|
+
|
27
|
+
class TreeBuilder < ::Psych::TreeBuilder
|
28
|
+
def initialize(filename)
|
29
|
+
super()
|
30
|
+
@filename = filename
|
31
|
+
end
|
32
|
+
|
33
|
+
def set_start_location(node)
|
34
|
+
super
|
35
|
+
node.filename = @filename
|
36
|
+
end
|
37
|
+
|
38
|
+
def scalar(value, anchor, tag, plain, quated, style)
|
39
|
+
node = super
|
40
|
+
node.mapping_key = mapping_key?
|
41
|
+
node
|
42
|
+
end
|
43
|
+
|
44
|
+
private
|
45
|
+
|
46
|
+
def mapping_key?
|
47
|
+
@last.mapping? && @last.children.size.odd?
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
class Visitor < ::Psych::Visitors::ToRuby
|
52
|
+
if ::Psych::VERSION >= '3.2.0'
|
53
|
+
def initialize(scalar_scanner, class_loader)
|
54
|
+
super(scalar_scanner, class_loader, symbolize_names: true)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def register(node, object)
|
59
|
+
obj =
|
60
|
+
if override_object?(node)
|
61
|
+
file = node.filename
|
62
|
+
line = node.start_line + 1
|
63
|
+
column = node.start_column + 1
|
64
|
+
position = Position.new(file, line, column)
|
65
|
+
InputValue.new(object, position)
|
66
|
+
else
|
67
|
+
object
|
68
|
+
end
|
69
|
+
super(node, obj)
|
70
|
+
end
|
71
|
+
|
72
|
+
private
|
73
|
+
|
74
|
+
def override_object?(node)
|
75
|
+
node.mapping? || node.sequence? || (node.scalar? && !node.mapping_key?)
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
7
79
|
private
|
8
80
|
|
9
81
|
def load_yaml(file)
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
82
|
+
parse_yaml(File.binread(file), file)
|
83
|
+
.then { |result| to_ruby(result) }
|
84
|
+
.then { |result| symbolize_names(result) }
|
85
|
+
end
|
86
|
+
|
87
|
+
def parse_yaml(yaml, file)
|
88
|
+
parser = ::Psych::Parser.new(TreeBuilder.new(file))
|
89
|
+
parser.parse(yaml, file)
|
90
|
+
parser.handler.root.children.first
|
91
|
+
end
|
92
|
+
|
93
|
+
def to_ruby(result)
|
94
|
+
cl = ::Psych::ClassLoader::Restricted.new(['Symbol'], [])
|
95
|
+
ss = ::Psych::ScalarScanner.new(cl)
|
96
|
+
Visitor.new(ss, cl).accept(result)
|
97
|
+
end
|
98
|
+
|
99
|
+
def symbolize_names(result)
|
100
|
+
return result if ::Psych::VERSION >= '3.2.0'
|
101
|
+
|
102
|
+
if result.match_class?(Hash)
|
103
|
+
keys = result.keys
|
104
|
+
keys.each do |key|
|
105
|
+
result[key.to_sym] = symbolize_names(result.delete(key))
|
106
|
+
end
|
107
|
+
elsif result.match_class?(Array)
|
108
|
+
result.map! { |value| symbolize_names(value) }
|
109
|
+
end
|
110
|
+
|
111
|
+
result
|
16
112
|
end
|
17
113
|
end
|
18
114
|
end
|
data/lib/rggen/core/options.rb
CHANGED
@@ -119,7 +119,7 @@ module RgGen
|
|
119
119
|
Options.add_option(:configuration) do |option|
|
120
120
|
option.short_option '-c'
|
121
121
|
option.long_option '--configuration FILE'
|
122
|
-
option.default { ENV
|
122
|
+
option.default { ENV.fetch('RGGEN_DEFAULT_CONFIGURATION_FILE', nil) }
|
123
123
|
option.description 'Specify a configuration file'
|
124
124
|
end
|
125
125
|
|
@@ -7,7 +7,8 @@ module RgGen
|
|
7
7
|
end
|
8
8
|
|
9
9
|
module RaiseError
|
10
|
-
def error(message,
|
10
|
+
def error(message, input_value = nil)
|
11
|
+
position = input_value.position if input_value.respond_to?(:position)
|
11
12
|
raise RegisterMapError.new(message, position || @position)
|
12
13
|
end
|
13
14
|
end
|
@@ -4,6 +4,8 @@ module RgGen
|
|
4
4
|
module Core
|
5
5
|
module RegisterMap
|
6
6
|
module HashLoader
|
7
|
+
include Utility::TypeChecker
|
8
|
+
|
7
9
|
private
|
8
10
|
|
9
11
|
SUB_LAYER_KEYS = {
|
@@ -21,7 +23,7 @@ module RgGen
|
|
21
23
|
}.freeze
|
22
24
|
|
23
25
|
def format_layer_data(read_data, layer, file)
|
24
|
-
if
|
26
|
+
if array?(read_data)
|
25
27
|
format_array_layer_data(read_data, layer, file)
|
26
28
|
else
|
27
29
|
fomrat_hash_layer_data(read_data, layer, file)
|
@@ -39,7 +41,7 @@ module RgGen
|
|
39
41
|
end
|
40
42
|
|
41
43
|
def format_sub_layer_data(read_data, layer, file)
|
42
|
-
if
|
44
|
+
if array?(read_data)
|
43
45
|
format_array_sub_layer_data(read_data, layer, file)
|
44
46
|
else
|
45
47
|
format_hash_sub_layer_data(read_data, layer, file)
|
@@ -32,6 +32,18 @@ module RgGen
|
|
32
32
|
def integer
|
33
33
|
INTEGER_PATTERN
|
34
34
|
end
|
35
|
+
|
36
|
+
TRUTHY_PATTERN = /true|on|yes/i.freeze
|
37
|
+
|
38
|
+
def truthy_pattern
|
39
|
+
TRUTHY_PATTERN
|
40
|
+
end
|
41
|
+
|
42
|
+
FALSEY_PATTERN = /false|off|no/i.freeze
|
43
|
+
|
44
|
+
def falsey_pattern
|
45
|
+
FALSEY_PATTERN
|
46
|
+
end
|
35
47
|
end
|
36
48
|
end
|
37
49
|
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RgGen
|
4
|
+
module Core
|
5
|
+
module Utility
|
6
|
+
module TypeChecker
|
7
|
+
[String, Symbol, Integer, Array, Hash].each do |klass|
|
8
|
+
module_eval(<<~DEFINE_METHOD, __FILE__, __LINE__ + 1)
|
9
|
+
# module_function def string?(value)
|
10
|
+
# return value.match_class?(String) if value.respond_to?(:match_class?)
|
11
|
+
# value.is_a?(String)
|
12
|
+
# end
|
13
|
+
module_function def #{klass.to_s.downcase}?(value)
|
14
|
+
return value.match_class?(#{klass}) if value.respond_to?(:match_class?)
|
15
|
+
value.is_a?(#{klass})
|
16
|
+
end
|
17
|
+
DEFINE_METHOD
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/lib/rggen/core/version.rb
CHANGED
data/lib/rggen/core.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'delegate'
|
3
4
|
require 'docile'
|
4
5
|
require 'erubi'
|
5
6
|
require 'fileutils'
|
@@ -14,6 +15,7 @@ require 'yaml'
|
|
14
15
|
require_relative 'core/version'
|
15
16
|
|
16
17
|
require_relative 'core/facets'
|
18
|
+
require_relative 'core/core_extensions/kernel'
|
17
19
|
require_relative 'core/core_extensions/object'
|
18
20
|
|
19
21
|
require_relative 'core/utility/attribute_setter'
|
@@ -24,6 +26,7 @@ require_relative 'core/utility/code_utility/structure_definition'
|
|
24
26
|
require_relative 'core/utility/code_utility'
|
25
27
|
require_relative 'core/utility/error_utility'
|
26
28
|
require_relative 'core/utility/regexp_patterns'
|
29
|
+
require_relative 'core/utility/type_checker'
|
27
30
|
|
28
31
|
require_relative 'core/exceptions'
|
29
32
|
|
@@ -105,7 +108,6 @@ require_relative 'core/builder/plugin_manager'
|
|
105
108
|
require_relative 'core/builder/builder'
|
106
109
|
require_relative 'core/builder'
|
107
110
|
|
108
|
-
require_relative 'core/plugin'
|
109
111
|
require_relative 'core/printers'
|
110
112
|
require_relative 'core/options'
|
111
113
|
require_relative 'core/dsl'
|
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.
|
4
|
+
version: 0.28.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Taichi Ishitani
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-10-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: docile
|
@@ -134,6 +134,7 @@ files:
|
|
134
134
|
- lib/rggen/core/configuration/ruby_loader.rb
|
135
135
|
- lib/rggen/core/configuration/toml_loader.rb
|
136
136
|
- lib/rggen/core/configuration/yaml_loader.rb
|
137
|
+
- lib/rggen/core/core_extensions/kernel.rb
|
137
138
|
- lib/rggen/core/core_extensions/object.rb
|
138
139
|
- lib/rggen/core/dsl.rb
|
139
140
|
- lib/rggen/core/exceptions.rb
|
@@ -165,7 +166,6 @@ files:
|
|
165
166
|
- lib/rggen/core/output_base/raise_error.rb
|
166
167
|
- lib/rggen/core/output_base/source_file_component_factory.rb
|
167
168
|
- lib/rggen/core/output_base/template_engine.rb
|
168
|
-
- lib/rggen/core/plugin.rb
|
169
169
|
- lib/rggen/core/printers.rb
|
170
170
|
- lib/rggen/core/register_map.rb
|
171
171
|
- lib/rggen/core/register_map/component.rb
|
@@ -188,12 +188,13 @@ files:
|
|
188
188
|
- lib/rggen/core/utility/code_utility/structure_definition.rb
|
189
189
|
- lib/rggen/core/utility/error_utility.rb
|
190
190
|
- lib/rggen/core/utility/regexp_patterns.rb
|
191
|
+
- lib/rggen/core/utility/type_checker.rb
|
191
192
|
- lib/rggen/core/version.rb
|
192
193
|
homepage: https://github.com/rggen/rggen-core
|
193
194
|
licenses:
|
194
195
|
- MIT
|
195
196
|
metadata:
|
196
|
-
bug_tracker_uri: https://github.com/rggen/rggen
|
197
|
+
bug_tracker_uri: https://github.com/rggen/rggen/issues
|
197
198
|
mailing_list_uri: https://groups.google.com/d/forum/rggen
|
198
199
|
rubygems_mfa_required: 'true'
|
199
200
|
source_code_uri: https://github.com/rggen/rggen-core
|
@@ -213,8 +214,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
213
214
|
- !ruby/object:Gem::Version
|
214
215
|
version: '0'
|
215
216
|
requirements: []
|
216
|
-
rubygems_version: 3.3.
|
217
|
+
rubygems_version: 3.3.7
|
217
218
|
signing_key:
|
218
219
|
specification_version: 4
|
219
|
-
summary: rggen-core-0.
|
220
|
+
summary: rggen-core-0.28.0
|
220
221
|
test_files: []
|
data/lib/rggen/core/plugin.rb
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RgGen
|
4
|
-
module Core
|
5
|
-
module Plugin
|
6
|
-
attr_reader :plugin_spec
|
7
|
-
|
8
|
-
private
|
9
|
-
|
10
|
-
def setup_plugin(name)
|
11
|
-
@plugin_spec = Builder::PluginSpec.new(name, self)
|
12
|
-
block_given? && yield(@plugin_spec)
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|