rggen-core 0.31.2 → 0.32.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +0 -1
- data/lib/rggen/core/builder/builder.rb +5 -1
- data/lib/rggen/core/builder/component_registry.rb +5 -4
- data/lib/rggen/core/builder/feature_entry_base.rb +8 -0
- data/lib/rggen/core/builder/feature_registry.rb +31 -4
- data/lib/rggen/core/builder/general_feature_entry.rb +1 -1
- data/lib/rggen/core/builder/layer.rb +45 -37
- data/lib/rggen/core/builder/list_feature_entry.rb +8 -3
- data/lib/rggen/core/builder/simple_feature_entry.rb +8 -5
- data/lib/rggen/core/dsl.rb +4 -0
- data/lib/rggen/core/facets.rb +0 -1
- data/lib/rggen/core/input_base/feature.rb +4 -4
- data/lib/rggen/core/input_base/input_data.rb +2 -2
- data/lib/rggen/core/input_base/input_matcher.rb +1 -1
- data/lib/rggen/core/input_base/property.rb +6 -6
- data/lib/rggen/core/input_base/yaml_loader.rb +2 -19
- data/lib/rggen/core/utility/regexp_patterns.rb +6 -6
- data/lib/rggen/core/version.rb +1 -1
- metadata +5 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dcbb14dd216582b7b503d8375561dba39eefd175b5b4805a413cd300de7a567a
|
4
|
+
data.tar.gz: ad41cb0b010b50ea9b92589ee5c83b90a797b9c6757f612b789ac64924ecc1ab
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f349b6601893afd5d7ca66e841cb0c0476d8ce29ac53a30a1cc47e1d65fc532ed64b9da36d2790542e064a9d93c8a69b9113529f1aaa1414d09c63655c8719f4
|
7
|
+
data.tar.gz: a4815c7d1b0c1123a9c6438bb110ed760d2f054728b5e81b24eedf2d6f1e948e1ee5b05810b6506833343a6686bd13508abbf79129c69329b3ae7916a602e09a
|
data/README.md
CHANGED
@@ -2,7 +2,6 @@
|
|
2
2
|
[![CI](https://github.com/rggen/rggen-core/workflows/CI/badge.svg)](https://github.com/rggen/rggen-core/actions?query=workflow%3ACI)
|
3
3
|
[![Maintainability](https://api.codeclimate.com/v1/badges/53c8e6654c2b5ecb9142/maintainability)](https://codeclimate.com/github/rggen/rggen-core/maintainability)
|
4
4
|
[![codecov](https://codecov.io/gh/rggen/rggen-core/branch/master/graph/badge.svg)](https://codecov.io/gh/rggen/rggen-core)
|
5
|
-
[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=rggen_rggen-core&metric=alert_status)](https://sonarcloud.io/dashboard?id=rggen_rggen-core)
|
6
5
|
[![Gitter](https://badges.gitter.im/rggen/rggen.svg)](https://gitter.im/rggen/rggen?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
|
7
6
|
|
8
7
|
# RgGen::Core
|
@@ -50,7 +50,11 @@ module RgGen
|
|
50
50
|
:define_feature,
|
51
51
|
:define_simple_feature,
|
52
52
|
:define_list_feature,
|
53
|
-
:define_list_item_feature
|
53
|
+
:define_list_item_feature,
|
54
|
+
:modify_feature,
|
55
|
+
:modify_simple_feature,
|
56
|
+
:modify_list_feature,
|
57
|
+
:modify_list_item_feature
|
54
58
|
].each do |method_name|
|
55
59
|
define_method(method_name) do |layer, *args, &body|
|
56
60
|
@layers[layer].__send__(__method__, *args, &body)
|
@@ -39,10 +39,11 @@ module RgGen
|
|
39
39
|
end
|
40
40
|
|
41
41
|
def build_factories
|
42
|
-
factories =
|
43
|
-
|
44
|
-
.
|
45
|
-
.
|
42
|
+
factories = @entries.to_h do |entry|
|
43
|
+
entry
|
44
|
+
.build_factory
|
45
|
+
.then { |f| [f.layer, f] }
|
46
|
+
end
|
46
47
|
factories.each_value { |f| f.component_factories factories }
|
47
48
|
factories.values
|
48
49
|
end
|
@@ -12,6 +12,10 @@ module RgGen
|
|
12
12
|
attr_reader :registry
|
13
13
|
attr_reader :name
|
14
14
|
|
15
|
+
def modify(&body)
|
16
|
+
eval_body(&body)
|
17
|
+
end
|
18
|
+
|
15
19
|
def match_entry_type?(entry_type)
|
16
20
|
entry_type == entry_type_name
|
17
21
|
end
|
@@ -31,6 +35,10 @@ module RgGen
|
|
31
35
|
end
|
32
36
|
end
|
33
37
|
|
38
|
+
def eval_body(&body)
|
39
|
+
block_given? && Docile.dsl_eval(self, @name, &body)
|
40
|
+
end
|
41
|
+
|
34
42
|
def target_features(_tergets)
|
35
43
|
end
|
36
44
|
|
@@ -24,10 +24,23 @@ module RgGen
|
|
24
24
|
end
|
25
25
|
|
26
26
|
def define_list_item_feature(list_name, feature_name, context = nil, &body)
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
27
|
+
list_item_entry(list_name).define_feature(feature_name, context, &body)
|
28
|
+
end
|
29
|
+
|
30
|
+
def modify_feature(name, &body)
|
31
|
+
modify_entry(:general, name, &body)
|
32
|
+
end
|
33
|
+
|
34
|
+
def modify_simple_feature(name, &body)
|
35
|
+
modify_entry(:simple, name, &body)
|
36
|
+
end
|
37
|
+
|
38
|
+
def modify_list_feature(list_name, &body)
|
39
|
+
modify_entry(:list, list_name, &body)
|
40
|
+
end
|
41
|
+
|
42
|
+
def modify_list_item_feature(list_name, feature_name, &body)
|
43
|
+
list_item_entry(list_name).modify_feature(feature_name, &body)
|
31
44
|
end
|
32
45
|
|
33
46
|
def enable(list_name = nil, feature_names)
|
@@ -95,6 +108,20 @@ module RgGen
|
|
95
108
|
@feature_entries[name] = entry
|
96
109
|
end
|
97
110
|
|
111
|
+
def modify_entry(type, name, &body)
|
112
|
+
entry = @feature_entries[name]
|
113
|
+
entry&.match_entry_type?(type) ||
|
114
|
+
(raise BuilderError.new("unknown feature: #{name}"))
|
115
|
+
entry.modify(&body)
|
116
|
+
end
|
117
|
+
|
118
|
+
def list_item_entry(list_name)
|
119
|
+
entry = @feature_entries[list_name]
|
120
|
+
entry&.match_entry_type?(:list) ||
|
121
|
+
(raise BuilderError.new("unknown feature: #{list_name}"))
|
122
|
+
entry
|
123
|
+
end
|
124
|
+
|
98
125
|
def enabled_list_features(list_name)
|
99
126
|
return [] unless enabled_list?(list_name)
|
100
127
|
features = @feature_entries[list_name].features
|
@@ -10,7 +10,7 @@ module RgGen
|
|
10
10
|
@feature = Class.new(base_feature)
|
11
11
|
@factory = Class.new(base_factory)
|
12
12
|
attach_shared_context(context, @feature, @factory, self)
|
13
|
-
|
13
|
+
eval_body(&body)
|
14
14
|
end
|
15
15
|
|
16
16
|
def define_factory(&body)
|
@@ -5,30 +5,27 @@ module RgGen
|
|
5
5
|
module Builder
|
6
6
|
class Layer
|
7
7
|
class Proxy
|
8
|
-
def initialize
|
9
|
-
|
8
|
+
def initialize(list_name, feature_name)
|
9
|
+
@list_name = list_name
|
10
|
+
@feature_name = feature_name
|
10
11
|
end
|
11
12
|
|
12
|
-
|
13
|
-
|
14
|
-
attr_setter :list_name
|
15
|
-
attr_setter :feature_name
|
13
|
+
attr_reader :list_name
|
14
|
+
attr_reader :feature_name
|
16
15
|
|
17
16
|
def register_execution(registry, &body)
|
18
17
|
@executions ||= []
|
19
18
|
@executions << { registry: registry, body: body }
|
20
19
|
end
|
21
20
|
|
22
|
-
def execute(layer)
|
21
|
+
def execute(layer, method_name, &body)
|
23
22
|
Docile.dsl_eval(layer, &body)
|
24
|
-
@executions
|
25
|
-
end
|
26
|
-
|
27
|
-
private
|
23
|
+
return unless @executions
|
28
24
|
|
29
|
-
def call_execution(layer, execution)
|
30
25
|
args = [list_name, feature_name, layer.shared_context].compact
|
31
|
-
|
26
|
+
@executions.each do |execution|
|
27
|
+
execution[:registry].__send__(method_name, *args, &execution[:body])
|
28
|
+
end
|
32
29
|
end
|
33
30
|
end
|
34
31
|
|
@@ -53,44 +50,55 @@ module RgGen
|
|
53
50
|
current_shared_context(false)
|
54
51
|
end
|
55
52
|
|
53
|
+
def component_defined?(component_name)
|
54
|
+
@feature_registries.key?(component_name)
|
55
|
+
end
|
56
|
+
|
56
57
|
def define_feature(feature_names, &body)
|
57
58
|
Array(feature_names).each do |feature_name|
|
58
|
-
do_proxy_call
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
59
|
+
do_proxy_call(__method__, nil, feature_name, &body)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def modify_feature(feature_names, &body)
|
64
|
+
Array(feature_names).each do |feature_name|
|
65
|
+
do_proxy_call(__method__, nil, feature_name, &body)
|
63
66
|
end
|
64
67
|
end
|
65
68
|
|
66
69
|
def define_simple_feature(feature_names, &body)
|
67
70
|
Array(feature_names).each do |feature_name|
|
68
|
-
do_proxy_call
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
71
|
+
do_proxy_call(__method__, nil, feature_name, &body)
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
def modify_simple_feature(feature_names, &body)
|
76
|
+
Array(feature_names).each do |feature_name|
|
77
|
+
do_proxy_call(__method__, nil, feature_name, &body)
|
73
78
|
end
|
74
79
|
end
|
75
80
|
|
76
81
|
def define_list_feature(list_names, &body)
|
77
82
|
Array(list_names).each do |list_name|
|
78
|
-
do_proxy_call
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
+
do_proxy_call(__method__, list_name, nil, &body)
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
def modify_list_feature(list_names, &body)
|
88
|
+
Array(list_names).each do |list_name|
|
89
|
+
do_proxy_call(__method__, list_name, nil, &body)
|
83
90
|
end
|
84
91
|
end
|
85
92
|
|
86
93
|
def define_list_item_feature(list_name, feature_names, &body)
|
87
94
|
Array(feature_names).each do |feature_name|
|
88
|
-
do_proxy_call
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
95
|
+
do_proxy_call(__method__, list_name, feature_name, &body)
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
def modify_list_item_feature(list_name, feature_names, &body)
|
100
|
+
Array(feature_names).each do |feature_name|
|
101
|
+
do_proxy_call(__method__, list_name, feature_name, &body)
|
94
102
|
end
|
95
103
|
end
|
96
104
|
|
@@ -122,9 +130,9 @@ module RgGen
|
|
122
130
|
end
|
123
131
|
end
|
124
132
|
|
125
|
-
def do_proxy_call(&
|
126
|
-
@proxy = Proxy.new(
|
127
|
-
@proxy.execute(self)
|
133
|
+
def do_proxy_call(method_name, list_name, feature_name, &body)
|
134
|
+
@proxy = Proxy.new(list_name, feature_name)
|
135
|
+
@proxy.execute(self, method_name, &body)
|
128
136
|
remove_instance_variable(:@proxy)
|
129
137
|
end
|
130
138
|
|
@@ -15,7 +15,7 @@ module RgGen
|
|
15
15
|
@base_feature = Class.new(base_feature)
|
16
16
|
@factory = Class.new(base_factory)
|
17
17
|
attach_shared_context(context, @base_feature, @factory, self)
|
18
|
-
|
18
|
+
eval_body(&body)
|
19
19
|
end
|
20
20
|
|
21
21
|
def define_factory(&body)
|
@@ -31,8 +31,7 @@ module RgGen
|
|
31
31
|
alias_method :base_feature, :define_base_feature
|
32
32
|
|
33
33
|
def define_feature(feature_name, context = nil, &body)
|
34
|
-
@features[feature_name]
|
35
|
-
feature = @features[feature_name]
|
34
|
+
feature = @features[feature_name] = Class.new(@base_feature)
|
36
35
|
if context
|
37
36
|
feature.method_defined?(:shared_context) &&
|
38
37
|
(raise BuilderError.new('shared context has already been set'))
|
@@ -43,6 +42,12 @@ module RgGen
|
|
43
42
|
|
44
43
|
alias_method :feature, :define_feature
|
45
44
|
|
45
|
+
def modify_feature(feature_name, &body)
|
46
|
+
@features.key?(feature_name) ||
|
47
|
+
(raise BuilderError.new("unknown feature: #{feature_name}"))
|
48
|
+
body && @features[feature_name].class_exec(feature_name, &body)
|
49
|
+
end
|
50
|
+
|
46
51
|
def define_default_feature(&body)
|
47
52
|
@default_feature ||= Class.new(@base_feature)
|
48
53
|
body && @default_feature.class_exec(&body)
|
@@ -5,7 +5,7 @@ module RgGen
|
|
5
5
|
module Builder
|
6
6
|
class SimpleFeatureEntry < FeatureEntryBase
|
7
7
|
def setup(base_feature, factory, context, &body)
|
8
|
-
|
8
|
+
define_feature(base_feature, context, &body)
|
9
9
|
@factory = factory
|
10
10
|
end
|
11
11
|
|
@@ -16,15 +16,18 @@ module RgGen
|
|
16
16
|
end
|
17
17
|
|
18
18
|
def define_feature(base, context, &body)
|
19
|
-
feature = Class.new(base)
|
20
|
-
attach_shared_context(context, feature)
|
21
|
-
|
22
|
-
feature
|
19
|
+
@feature = Class.new(base)
|
20
|
+
attach_shared_context(context, @feature)
|
21
|
+
eval_body(&body)
|
23
22
|
end
|
24
23
|
|
25
24
|
def target_feature
|
26
25
|
@feature
|
27
26
|
end
|
27
|
+
|
28
|
+
def eval_body(&body)
|
29
|
+
block_given? && @feature.class_exec(@name, &body)
|
30
|
+
end
|
28
31
|
end
|
29
32
|
end
|
30
33
|
end
|
data/lib/rggen/core/dsl.rb
CHANGED
data/lib/rggen/core/facets.rb
CHANGED
@@ -9,8 +9,8 @@ module RgGen
|
|
9
9
|
include ConversionUtility
|
10
10
|
|
11
11
|
class << self
|
12
|
-
def property(name,
|
13
|
-
Property.define(self, name,
|
12
|
+
def property(name, ...)
|
13
|
+
Property.define(self, name, ...)
|
14
14
|
properties.include?(name) || properties << name
|
15
15
|
end
|
16
16
|
|
@@ -49,8 +49,8 @@ module RgGen
|
|
49
49
|
builders.nil?
|
50
50
|
end
|
51
51
|
|
52
|
-
def input_pattern(pattern_or_patterns,
|
53
|
-
@input_matcher = InputMatcher.new(pattern_or_patterns,
|
52
|
+
def input_pattern(pattern_or_patterns, ...)
|
53
|
+
@input_matcher = InputMatcher.new(pattern_or_patterns, ...)
|
54
54
|
end
|
55
55
|
|
56
56
|
attr_reader :input_matcher
|
@@ -87,8 +87,8 @@ module RgGen
|
|
87
87
|
caller_location.path.include?('docile')
|
88
88
|
end
|
89
89
|
|
90
|
-
def create_child_data(layer,
|
91
|
-
child_data_class.new(layer, @valid_value_lists,
|
90
|
+
def create_child_data(layer, ...)
|
91
|
+
child_data_class.new(layer, @valid_value_lists, ...)
|
92
92
|
end
|
93
93
|
|
94
94
|
def child_data_class
|
@@ -23,16 +23,16 @@ module RgGen
|
|
23
23
|
|
24
24
|
def define(feature)
|
25
25
|
feature.class_exec(self) do |property|
|
26
|
-
define_method(property.name) do |*args, **
|
27
|
-
property.evaluate(self, *args, **
|
26
|
+
define_method(property.name) do |*args, **kwargs, &block|
|
27
|
+
property.evaluate(self, *args, **kwargs, &block)
|
28
28
|
end
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
32
|
-
def evaluate(feature,
|
32
|
+
def evaluate(feature, ...)
|
33
33
|
feature.verify(@options[:verify]) if @options.key?(:verify)
|
34
34
|
if proxy_property?
|
35
|
-
proxy_property(feature,
|
35
|
+
proxy_property(feature, ...)
|
36
36
|
else
|
37
37
|
default_property(feature)
|
38
38
|
end
|
@@ -55,7 +55,7 @@ module RgGen
|
|
55
55
|
].any?
|
56
56
|
end
|
57
57
|
|
58
|
-
def proxy_property(feature,
|
58
|
+
def proxy_property(feature, ...)
|
59
59
|
receiver, method =
|
60
60
|
if @costom_property
|
61
61
|
[@costom_property.bind(feature), :call]
|
@@ -64,7 +64,7 @@ module RgGen
|
|
64
64
|
else
|
65
65
|
[feature, @options[:forward_to]]
|
66
66
|
end
|
67
|
-
receiver.__send__(method,
|
67
|
+
receiver.__send__(method, ...)
|
68
68
|
end
|
69
69
|
|
70
70
|
def default_property(feature)
|
@@ -49,10 +49,8 @@ module RgGen
|
|
49
49
|
end
|
50
50
|
|
51
51
|
class Visitor < ::Psych::Visitors::ToRuby
|
52
|
-
|
53
|
-
|
54
|
-
super(scalar_scanner, class_loader, symbolize_names: true)
|
55
|
-
end
|
52
|
+
def initialize(scalar_scanner, class_loader)
|
53
|
+
super(scalar_scanner, class_loader, symbolize_names: true)
|
56
54
|
end
|
57
55
|
|
58
56
|
def accept(node)
|
@@ -79,7 +77,6 @@ module RgGen
|
|
79
77
|
def load_yaml(file)
|
80
78
|
parse_yaml(File.binread(file), file)
|
81
79
|
.then { |result| to_ruby(result) }
|
82
|
-
.then { |result| symbolize_names(result) }
|
83
80
|
end
|
84
81
|
|
85
82
|
def parse_yaml(yaml, file)
|
@@ -93,20 +90,6 @@ module RgGen
|
|
93
90
|
ss = ::Psych::ScalarScanner.new(cl)
|
94
91
|
Visitor.new(ss, cl).accept(result)
|
95
92
|
end
|
96
|
-
|
97
|
-
def symbolize_names(result)
|
98
|
-
return result if ::Psych::VERSION >= '3.2.0'
|
99
|
-
|
100
|
-
if result.match_class?(Hash)
|
101
|
-
result
|
102
|
-
.transform_keys!(&:to_sym)
|
103
|
-
.transform_values!(&method(:symbolize_names))
|
104
|
-
elsif result.match_class?(Array)
|
105
|
-
result.map! { |value| symbolize_names(value) }
|
106
|
-
end
|
107
|
-
|
108
|
-
result
|
109
|
-
end
|
110
93
|
end
|
111
94
|
end
|
112
95
|
end
|
@@ -12,17 +12,17 @@ module RgGen
|
|
12
12
|
|
13
13
|
private
|
14
14
|
|
15
|
-
VARIABLE_NAME_PATTERN = /[a-z_]\w*/i
|
15
|
+
VARIABLE_NAME_PATTERN = /[a-z_]\w*/i
|
16
16
|
|
17
17
|
def variable_name
|
18
18
|
VARIABLE_NAME_PATTERN
|
19
19
|
end
|
20
20
|
|
21
|
-
BINARY_PATTERN = /[+-]?0b[01](?:_?[01])*/i
|
21
|
+
BINARY_PATTERN = /[+-]?0b[01](?:_?[01])*/i
|
22
22
|
|
23
|
-
DECIMAL_PATTERN = /[+-]?(?:[1-9]_?(?:\d_?)*)?\d
|
23
|
+
DECIMAL_PATTERN = /[+-]?(?:[1-9]_?(?:\d_?)*)?\d/
|
24
24
|
|
25
|
-
HEXADECIMAL_PATTERN = /[+-]?0x\h(?:_?\h)*/i
|
25
|
+
HEXADECIMAL_PATTERN = /[+-]?0x\h(?:_?\h)*/i
|
26
26
|
|
27
27
|
INTEGER_PATTERN =
|
28
28
|
Regexp.union(
|
@@ -33,13 +33,13 @@ module RgGen
|
|
33
33
|
INTEGER_PATTERN
|
34
34
|
end
|
35
35
|
|
36
|
-
TRUTHY_PATTERN = /true|on|yes/i
|
36
|
+
TRUTHY_PATTERN = /true|on|yes/i
|
37
37
|
|
38
38
|
def truthy_pattern
|
39
39
|
TRUTHY_PATTERN
|
40
40
|
end
|
41
41
|
|
42
|
-
FALSEY_PATTERN = /false|off|no/i
|
42
|
+
FALSEY_PATTERN = /false|off|no/i
|
43
43
|
|
44
44
|
def falsey_pattern
|
45
45
|
FALSEY_PATTERN
|
data/lib/rggen/core/version.rb
CHANGED
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.32.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: 2023-
|
11
|
+
date: 2023-12-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: docile
|
@@ -72,20 +72,6 @@ dependencies:
|
|
72
72
|
- - ">="
|
73
73
|
- !ruby/object:Gem::Version
|
74
74
|
version: '2.0'
|
75
|
-
- !ruby/object:Gem::Dependency
|
76
|
-
name: bundler
|
77
|
-
requirement: !ruby/object:Gem::Requirement
|
78
|
-
requirements:
|
79
|
-
- - ">="
|
80
|
-
- !ruby/object:Gem::Version
|
81
|
-
version: '0'
|
82
|
-
type: :development
|
83
|
-
prerelease: false
|
84
|
-
version_requirements: !ruby/object:Gem::Requirement
|
85
|
-
requirements:
|
86
|
-
- - ">="
|
87
|
-
- !ruby/object:Gem::Version
|
88
|
-
version: '0'
|
89
75
|
description: Core library of RgGen tool.
|
90
76
|
email:
|
91
77
|
- rggen@googlegroups.com
|
@@ -215,15 +201,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
215
201
|
requirements:
|
216
202
|
- - ">="
|
217
203
|
- !ruby/object:Gem::Version
|
218
|
-
version:
|
204
|
+
version: 3.0.0
|
219
205
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
220
206
|
requirements:
|
221
207
|
- - ">="
|
222
208
|
- !ruby/object:Gem::Version
|
223
209
|
version: '0'
|
224
210
|
requirements: []
|
225
|
-
rubygems_version: 3.
|
211
|
+
rubygems_version: 3.5.3
|
226
212
|
signing_key:
|
227
213
|
specification_version: 4
|
228
|
-
summary: rggen-core-0.
|
214
|
+
summary: rggen-core-0.32.0
|
229
215
|
test_files: []
|