rggen-core 0.35.0 → 0.36.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/LICENSE +1 -1
- data/README.md +3 -3
- data/lib/rggen/core/base/component.rb +2 -2
- data/lib/rggen/core/base/component_factory.rb +4 -4
- data/lib/rggen/core/base/feature_factory.rb +4 -4
- data/lib/rggen/core/builder/builder.rb +20 -6
- data/lib/rggen/core/builder/component_registry.rb +4 -0
- data/lib/rggen/core/builder/feature_registry.rb +41 -34
- data/lib/rggen/core/builder/input_component_registry.rb +2 -3
- data/lib/rggen/core/builder/layer.rb +4 -0
- data/lib/rggen/core/builder/list_feature_entry.rb +1 -1
- data/lib/rggen/core/builder/loader_registry.rb +6 -6
- data/lib/rggen/core/builder/plugin_manager.rb +11 -6
- data/lib/rggen/core/configuration/json_loader.rb +0 -4
- data/lib/rggen/core/configuration/toml_loader.rb +0 -4
- data/lib/rggen/core/configuration/yaml_loader.rb +0 -4
- data/lib/rggen/core/dsl.rb +1 -0
- data/lib/rggen/core/generator.rb +2 -0
- data/lib/rggen/core/input_base/feature_factory.rb +4 -5
- data/lib/rggen/core/input_base/input_data.rb +3 -2
- data/lib/rggen/core/input_base/input_value.rb +4 -4
- data/lib/rggen/core/input_base/json_loader.rb +2 -3
- data/lib/rggen/core/input_base/toml_loader.rb +2 -3
- data/lib/rggen/core/input_base/yaml_loader.rb +5 -83
- data/lib/rggen/core/output_base/template_engine.rb +2 -2
- data/lib/rggen/core/register_map/input_data.rb +1 -0
- data/lib/rggen/core/register_map/json_loader.rb +0 -4
- data/lib/rggen/core/register_map/toml_loader.rb +0 -4
- data/lib/rggen/core/register_map/yaml_loader.rb +0 -4
- data/lib/rggen/core/version.rb +1 -1
- data/lib/rggen/core.rb +3 -4
- metadata +19 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 307421fc81ca655e7025cfcb8374ef8d896d5000ed64a738523b876a8b09e471
|
|
4
|
+
data.tar.gz: 87b69bd57fb525e5e1782b0c257d7a8b020647fe2cd90dcefac9dccf5f9d3c62
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 5ead051d4fb49347d039fa862d8e01237d154b3fdffea3dde316e818b176f3ff0460159f4e94c349beaaac05df0f8afb504157d1ff7126cab416b2f2a651e924
|
|
7
|
+
data.tar.gz: f5830b7b5ac206bf9af38d53583b8cc3b0ad7a45f8b74f3197399263588512d9bbe9eaba14031fac324711d85dfd628c6e98cdebe3236df12bf2b801c15953f4
|
data/LICENSE
CHANGED
data/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
[](https://github.com/rggen/rggen-core/actions?query=workflow%3ACI)
|
|
3
3
|
[](https://qlty.sh/gh/rggen/projects/rggen-core)
|
|
4
4
|
[](https://codecov.io/gh/rggen/rggen-core)
|
|
5
|
-
[](https://discord.com/invite/KWya83ZZxr)
|
|
6
6
|
|
|
7
7
|
# RgGen::Core
|
|
8
8
|
|
|
@@ -38,13 +38,13 @@ Feedbacks, bug reports, questions and etc. are wellcome! You can post them by us
|
|
|
38
38
|
|
|
39
39
|
* [GitHub Issue Tracker](https://github.com/rggen/rggen/issues)
|
|
40
40
|
* [GitHub Discussions](https://github.com/rggen/rggen/discussions)
|
|
41
|
-
* [
|
|
41
|
+
* [Discord](https://discord.com/invite/KWya83ZZxr)
|
|
42
42
|
* [Mailing List](https://groups.google.com/d/forum/rggen)
|
|
43
43
|
* [Mail](mailto:rggen@googlegroups.com)
|
|
44
44
|
|
|
45
45
|
## Copyright & License
|
|
46
46
|
|
|
47
|
-
Copyright © 2017-
|
|
47
|
+
Copyright © 2017-2026 Taichi Ishitani. RgGen::Core is licensed under the [MIT License](https://opensource.org/licenses/MIT), see [LICENSE](LICENSE) for futher details.
|
|
48
48
|
|
|
49
49
|
## Code of Conduct
|
|
50
50
|
|
|
@@ -4,7 +4,7 @@ module RgGen
|
|
|
4
4
|
module Core
|
|
5
5
|
module Base
|
|
6
6
|
class Component
|
|
7
|
-
def initialize(parent, base_name, layer,
|
|
7
|
+
def initialize(parent, base_name, layer, ...)
|
|
8
8
|
@parent = parent
|
|
9
9
|
@base_name = base_name
|
|
10
10
|
@layer = layer
|
|
@@ -13,7 +13,7 @@ module RgGen
|
|
|
13
13
|
@features = {}
|
|
14
14
|
@depth = (parent&.depth || 0) + 1
|
|
15
15
|
@component_index = parent&.children&.size || 0
|
|
16
|
-
post_initialize(
|
|
16
|
+
post_initialize(...)
|
|
17
17
|
block_given? && yield(self)
|
|
18
18
|
end
|
|
19
19
|
|
|
@@ -87,12 +87,12 @@ module RgGen
|
|
|
87
87
|
def finalize(_component)
|
|
88
88
|
end
|
|
89
89
|
|
|
90
|
-
def create_feature(component, factory,
|
|
91
|
-
factory.create(component,
|
|
90
|
+
def create_feature(component, factory, ...)
|
|
91
|
+
factory.create(component, ...)
|
|
92
92
|
end
|
|
93
93
|
|
|
94
|
-
def create_child(component,
|
|
95
|
-
find_child_factory(
|
|
94
|
+
def create_child(component, ...)
|
|
95
|
+
find_child_factory(...).create(component, ...)
|
|
96
96
|
end
|
|
97
97
|
end
|
|
98
98
|
end
|
|
@@ -14,8 +14,8 @@ module RgGen
|
|
|
14
14
|
attr_setter :target_feature
|
|
15
15
|
attr_setter :target_features
|
|
16
16
|
|
|
17
|
-
def create_feature(component,
|
|
18
|
-
klass, sub_feature_name = select_feature(
|
|
17
|
+
def create_feature(component, ...)
|
|
18
|
+
klass, sub_feature_name = select_feature(...)
|
|
19
19
|
klass.new(@feature_name, sub_feature_name, component) do |feature|
|
|
20
20
|
feature.available? || break
|
|
21
21
|
block_given? && yield(feature)
|
|
@@ -25,8 +25,8 @@ module RgGen
|
|
|
25
25
|
|
|
26
26
|
private
|
|
27
27
|
|
|
28
|
-
def select_feature(
|
|
29
|
-
key = @target_features && target_feature_key(
|
|
28
|
+
def select_feature(...)
|
|
29
|
+
key = @target_features && target_feature_key(...)
|
|
30
30
|
feature = (key && @target_features[key]) || @target_feature
|
|
31
31
|
[feature, key]
|
|
32
32
|
end
|
|
@@ -61,14 +61,28 @@ module RgGen
|
|
|
61
61
|
end
|
|
62
62
|
end
|
|
63
63
|
|
|
64
|
-
def enable(layer,
|
|
65
|
-
@layers[layer].enable(
|
|
64
|
+
def enable(layer, ...)
|
|
65
|
+
@layers[layer].enable(...)
|
|
66
66
|
end
|
|
67
67
|
|
|
68
68
|
def enable_all
|
|
69
69
|
@layers.each_value(&:enable_all)
|
|
70
70
|
end
|
|
71
71
|
|
|
72
|
+
def disable_all
|
|
73
|
+
@layers.each_value(&:disable_all)
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def disable_unused_output_features(used_writers)
|
|
77
|
+
return if used_writers.empty?
|
|
78
|
+
|
|
79
|
+
@component_registries[:output].each do |name, registry|
|
|
80
|
+
next if used_writers.include?(name)
|
|
81
|
+
|
|
82
|
+
registry.disable_all_features
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
|
|
72
86
|
def build_factory(type, component)
|
|
73
87
|
@component_registries[type][component].build_factory
|
|
74
88
|
end
|
|
@@ -78,13 +92,13 @@ module RgGen
|
|
|
78
92
|
if targets.empty?
|
|
79
93
|
@component_registries[type]
|
|
80
94
|
else
|
|
81
|
-
|
|
95
|
+
collect_component_registries(type, targets)
|
|
82
96
|
end
|
|
83
97
|
registries.each_value.map(&:build_factory)
|
|
84
98
|
end
|
|
85
99
|
|
|
86
|
-
def delete(layer,
|
|
87
|
-
@layers.key?(layer) && @layers[layer].delete(
|
|
100
|
+
def delete(layer, ...)
|
|
101
|
+
@layers.key?(layer) && @layers[layer].delete(...)
|
|
88
102
|
end
|
|
89
103
|
|
|
90
104
|
def register_input_components
|
|
@@ -134,7 +148,7 @@ module RgGen
|
|
|
134
148
|
body && Docile.dsl_eval(registries[name], &body) || registries[name]
|
|
135
149
|
end
|
|
136
150
|
|
|
137
|
-
def
|
|
151
|
+
def collect_component_registries(type, targets)
|
|
138
152
|
unknown_components = targets - @component_registries[type].keys
|
|
139
153
|
unknown_components.empty? ||
|
|
140
154
|
(raise BuilderError.new("unknown component: #{unknown_components.first}"))
|
|
@@ -43,21 +43,35 @@ module RgGen
|
|
|
43
43
|
list_item_entry(list_name).modify_feature(feature_name, bodies)
|
|
44
44
|
end
|
|
45
45
|
|
|
46
|
-
def enable(
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
46
|
+
def enable(list_name_or_feature_names, feature_names = nil)
|
|
47
|
+
feature_names, list_name =
|
|
48
|
+
[feature_names, list_name_or_feature_names].compact
|
|
49
|
+
Array(list_name || feature_names)
|
|
50
|
+
.each { |name| @enabled_features[name] ||= [] }
|
|
51
|
+
|
|
52
|
+
return unless list_name
|
|
53
|
+
|
|
54
|
+
@enabled_features[list_name].merge!(Array(feature_names))
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def enable_all
|
|
58
|
+
disable_all
|
|
59
|
+
@feature_entries.each do |name, entry|
|
|
60
|
+
if entry.match_entry_type?(:list)
|
|
61
|
+
enable(name, entry.features)
|
|
62
|
+
else
|
|
63
|
+
enable(name)
|
|
52
64
|
end
|
|
53
65
|
end
|
|
54
66
|
end
|
|
55
67
|
|
|
56
|
-
def
|
|
68
|
+
def disable_all
|
|
57
69
|
@enabled_features.clear
|
|
58
70
|
end
|
|
59
71
|
|
|
60
|
-
def delete(
|
|
72
|
+
def delete(list_name_or_feature_names, feature_names = nil)
|
|
73
|
+
feature_names, list_name =
|
|
74
|
+
[feature_names, list_name_or_feature_names].compact
|
|
61
75
|
if list_name
|
|
62
76
|
@feature_entries[list_name]&.delete(feature_names)
|
|
63
77
|
else
|
|
@@ -67,9 +81,12 @@ module RgGen
|
|
|
67
81
|
|
|
68
82
|
def delete_all
|
|
69
83
|
@feature_entries.clear
|
|
84
|
+
@enabled_features.clear
|
|
70
85
|
end
|
|
71
86
|
|
|
72
|
-
def feature?(
|
|
87
|
+
def feature?(list_name_or_feature_name, feature_name = nil)
|
|
88
|
+
feature_name, list_name =
|
|
89
|
+
[feature_name, list_name_or_feature_name].compact
|
|
73
90
|
if list_name
|
|
74
91
|
list_feature?(list_name, feature_name)
|
|
75
92
|
else
|
|
@@ -78,19 +95,16 @@ module RgGen
|
|
|
78
95
|
end
|
|
79
96
|
|
|
80
97
|
def enabled_features(list_name = nil)
|
|
81
|
-
if list_name
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
@enabled_features
|
|
85
|
-
@enabled_features.keys & @feature_entries.keys
|
|
98
|
+
if !list_name
|
|
99
|
+
@enabled_features.keys.select { |name| feature?(name) }
|
|
100
|
+
elsif enabled_list?(list_name)
|
|
101
|
+
@enabled_features[list_name] & @feature_entries[list_name].features
|
|
86
102
|
end
|
|
87
103
|
end
|
|
88
104
|
|
|
89
105
|
def build_factories
|
|
90
|
-
target_features =
|
|
91
|
-
(@enabled_features.empty? && @feature_entries || @enabled_features).keys
|
|
92
106
|
@feature_entries
|
|
93
|
-
.slice(
|
|
107
|
+
.slice(*@enabled_features.keys)
|
|
94
108
|
.transform_values(&method(:build_factory))
|
|
95
109
|
end
|
|
96
110
|
|
|
@@ -118,32 +132,25 @@ module RgGen
|
|
|
118
132
|
|
|
119
133
|
def list_item_entry(list_name)
|
|
120
134
|
entry = @feature_entries[list_name]
|
|
121
|
-
entry&.match_entry_type?(:list)
|
|
122
|
-
|
|
123
|
-
|
|
135
|
+
return entry if entry&.match_entry_type?(:list)
|
|
136
|
+
|
|
137
|
+
raise BuilderError.new("unknown feature: #{list_name}")
|
|
124
138
|
end
|
|
125
139
|
|
|
126
|
-
def
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
140
|
+
def list_feature?(list_name, feature_name)
|
|
141
|
+
entry = @feature_entries[list_name]
|
|
142
|
+
return false unless entry
|
|
143
|
+
|
|
144
|
+
entry.match_entry_type?(:list) && entry.feature?(feature_name)
|
|
130
145
|
end
|
|
131
146
|
|
|
132
|
-
def enabled_list?(
|
|
133
|
-
|
|
134
|
-
return true if @enabled_features.empty?
|
|
135
|
-
return true if @enabled_features.key?(list_name)
|
|
136
|
-
false
|
|
147
|
+
def enabled_list?(name)
|
|
148
|
+
@feature_entries[name]&.match_entry_type?(:list) && @enabled_features.key?(name)
|
|
137
149
|
end
|
|
138
150
|
|
|
139
151
|
def build_factory(entry)
|
|
140
152
|
entry.build_factory(@enabled_features[entry.name])
|
|
141
153
|
end
|
|
142
|
-
|
|
143
|
-
def list_feature?(list_name, feature_name)
|
|
144
|
-
@feature_entries[list_name]&.match_entry_type?(:list) &&
|
|
145
|
-
@feature_entries[list_name]&.feature?(feature_name) || false
|
|
146
|
-
end
|
|
147
154
|
end
|
|
148
155
|
end
|
|
149
156
|
end
|
|
@@ -23,9 +23,8 @@ module RgGen
|
|
|
23
23
|
block_given? && yield(@loader_registries[loader_type])
|
|
24
24
|
end
|
|
25
25
|
|
|
26
|
-
def define_value_extractor(loader_type,
|
|
27
|
-
@loader_registries[loader_type]
|
|
28
|
-
.define_value_extractor(layers, value, &)
|
|
26
|
+
def define_value_extractor(loader_type, ...)
|
|
27
|
+
@loader_registries[loader_type].define_value_extractor(...)
|
|
29
28
|
end
|
|
30
29
|
|
|
31
30
|
def build_factory
|
|
@@ -143,6 +143,10 @@ module RgGen
|
|
|
143
143
|
@feature_registries.each_value(&:enable_all)
|
|
144
144
|
end
|
|
145
145
|
|
|
146
|
+
def disable_all
|
|
147
|
+
@feature_registries.each_value(&:disable_all)
|
|
148
|
+
end
|
|
149
|
+
|
|
146
150
|
def delete(...)
|
|
147
151
|
@feature_registries.each_value do |registry|
|
|
148
152
|
registry.delete(...)
|
|
@@ -18,20 +18,20 @@ module RgGen
|
|
|
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, &)
|
|
22
|
+
value, layers = [value, layers_or_value].compact
|
|
22
23
|
@extractors << create_extractor(layers, value, &)
|
|
23
24
|
end
|
|
24
25
|
|
|
25
|
-
def
|
|
26
|
-
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def ignore_values(layers = nil, values)
|
|
26
|
+
def ignore_values(layers_or_values, values = nil)
|
|
27
|
+
values, layers = [values, layers_or_values].compact
|
|
30
28
|
[layers].flatten.each do |layer|
|
|
31
29
|
(@ignore_values[layer] ||= []).concat(Array(values))
|
|
32
30
|
end
|
|
33
31
|
end
|
|
34
32
|
|
|
33
|
+
alias_method :ignore_value, :ignore_values
|
|
34
|
+
|
|
35
35
|
def create_loaders
|
|
36
36
|
@loaders.map { |loader| loader.new(@extractors, @ignore_values) }
|
|
37
37
|
end
|
|
@@ -137,9 +137,12 @@ module RgGen
|
|
|
137
137
|
end
|
|
138
138
|
|
|
139
139
|
def find_gemspec_by_name(name, version)
|
|
140
|
-
Gem::Specification
|
|
141
|
-
|
|
142
|
-
|
|
140
|
+
specs = Gem::Specification.find_all_by_name(name, version)
|
|
141
|
+
|
|
142
|
+
spec = specs.find(&:activated?)
|
|
143
|
+
return spec if spec
|
|
144
|
+
|
|
145
|
+
specs.find { |spec| !spec.has_conflicts? }
|
|
143
146
|
end
|
|
144
147
|
|
|
145
148
|
def find_gemspec_by_path(path)
|
|
@@ -167,10 +170,12 @@ module RgGen
|
|
|
167
170
|
end
|
|
168
171
|
|
|
169
172
|
def plugins_from_env
|
|
173
|
+
return unless ENV.key?('RGGEN_PLUGINS')
|
|
174
|
+
|
|
170
175
|
ENV['RGGEN_PLUGINS']
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
176
|
+
.split(':')
|
|
177
|
+
.reject(&:blank?)
|
|
178
|
+
.map { |entry| entry.split(',', 2) }
|
|
174
179
|
end
|
|
175
180
|
|
|
176
181
|
def do_normal_activation
|
data/lib/rggen/core/dsl.rb
CHANGED
data/lib/rggen/core/generator.rb
CHANGED
|
@@ -52,10 +52,7 @@ module RgGen
|
|
|
52
52
|
end
|
|
53
53
|
|
|
54
54
|
def process_active_input_value(input_value)
|
|
55
|
-
parsed_value, options =
|
|
56
|
-
if self.class.value_format
|
|
57
|
-
parse_input_value(input_value, self.class.value_format)
|
|
58
|
-
end
|
|
55
|
+
parsed_value, options = parse_input_value(input_value, self.class.value_format)
|
|
59
56
|
override_input_value(input_value, parsed_value, options) || input_value
|
|
60
57
|
end
|
|
61
58
|
|
|
@@ -66,13 +63,15 @@ module RgGen
|
|
|
66
63
|
}.freeze
|
|
67
64
|
|
|
68
65
|
def parse_input_value(input_value, value_format)
|
|
66
|
+
return unless value_format
|
|
67
|
+
|
|
69
68
|
format, options = value_format
|
|
70
69
|
VALUE_PARSERS[format].new(**options).parse(input_value)
|
|
71
70
|
end
|
|
72
71
|
|
|
73
72
|
def override_input_value(input_value, parsed_value, options)
|
|
74
73
|
(convert_value(input_value, parsed_value) || parsed_value)
|
|
75
|
-
&.then { |v| InputValue.new(v,
|
|
74
|
+
&.then { |v| InputValue.new(v, input_value.position, options) }
|
|
76
75
|
end
|
|
77
76
|
|
|
78
77
|
def convert_value(input_value, parsed_value)
|
|
@@ -24,7 +24,8 @@ module RgGen
|
|
|
24
24
|
assign_value(symbolized_name, value, position)
|
|
25
25
|
end
|
|
26
26
|
|
|
27
|
-
def []=(value_name,
|
|
27
|
+
def []=(value_name, value_and_position)
|
|
28
|
+
value, position = value_and_position
|
|
28
29
|
value(value_name, value, position)
|
|
29
30
|
end
|
|
30
31
|
|
|
@@ -48,7 +49,7 @@ module RgGen
|
|
|
48
49
|
end
|
|
49
50
|
|
|
50
51
|
def load_file(file)
|
|
51
|
-
build_by_block { instance_eval(File.
|
|
52
|
+
build_by_block { instance_eval(File.read(file), file, 1) }
|
|
52
53
|
end
|
|
53
54
|
|
|
54
55
|
private
|
|
@@ -4,12 +4,12 @@ module RgGen
|
|
|
4
4
|
module Core
|
|
5
5
|
module InputBase
|
|
6
6
|
class InputValue < ::SimpleDelegator
|
|
7
|
-
|
|
7
|
+
NO_VALUE = Object.new.freeze
|
|
8
8
|
|
|
9
|
-
def initialize(value, options =
|
|
9
|
+
def initialize(value, position, options = NO_VALUE)
|
|
10
10
|
super((value.is_a?(String) && value.strip) || value)
|
|
11
|
-
@options = options
|
|
12
11
|
@position = position
|
|
12
|
+
@options = options
|
|
13
13
|
end
|
|
14
14
|
|
|
15
15
|
alias_method :value, :__getobj__
|
|
@@ -33,7 +33,7 @@ module RgGen
|
|
|
33
33
|
end
|
|
34
34
|
|
|
35
35
|
def with_options?
|
|
36
|
-
!@options.equal?(
|
|
36
|
+
!@options.equal?(NO_VALUE)
|
|
37
37
|
end
|
|
38
38
|
|
|
39
39
|
def available?
|
|
@@ -4,91 +4,13 @@ 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
|
-
def initialize(scalar_scanner, class_loader)
|
|
53
|
-
super(scalar_scanner, class_loader, symbolize_names: true)
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
def accept(node)
|
|
57
|
-
object = super
|
|
58
|
-
if override_object?(node)
|
|
59
|
-
file = node.filename
|
|
60
|
-
line = node.start_line + 1
|
|
61
|
-
column = node.start_column + 1
|
|
62
|
-
InputValue.new(object, Position.new(file, line, column))
|
|
63
|
-
else
|
|
64
|
-
object
|
|
65
|
-
end
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
private
|
|
69
|
-
|
|
70
|
-
def override_object?(node)
|
|
71
|
-
node.mapping? || node.sequence? || (node.scalar? && !node.mapping_key?)
|
|
72
|
-
end
|
|
73
|
-
end
|
|
74
|
-
|
|
75
7
|
private
|
|
76
8
|
|
|
77
|
-
def
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
def parse_yaml(yaml, file)
|
|
83
|
-
parser = ::Psych::Parser.new(TreeBuilder.new(file))
|
|
84
|
-
parser.parse(yaml, file)
|
|
85
|
-
parser.handler.root.children.first
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
def to_ruby(result)
|
|
89
|
-
cl = ::Psych::ClassLoader::Restricted.new(['Symbol'], [])
|
|
90
|
-
ss = ::Psych::ScalarScanner.new(cl)
|
|
91
|
-
Visitor.new(ss, cl).accept(result)
|
|
9
|
+
def read_file(file)
|
|
10
|
+
YPS.load_file(
|
|
11
|
+
file,
|
|
12
|
+
aliases: true, symbolize_names: true, freeze: true, value_class: InputValue
|
|
13
|
+
)
|
|
92
14
|
end
|
|
93
15
|
end
|
|
94
16
|
end
|
data/lib/rggen/core/version.rb
CHANGED
data/lib/rggen/core.rb
CHANGED
|
@@ -8,10 +8,9 @@ require 'forwardable'
|
|
|
8
8
|
require 'optparse'
|
|
9
9
|
require 'pathname'
|
|
10
10
|
require 'singleton'
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
autoload :Tomlrb, 'tomlrb'
|
|
11
|
+
require 'json'
|
|
12
|
+
require 'tomlrb'
|
|
13
|
+
require 'yps'
|
|
15
14
|
|
|
16
15
|
require_relative 'core/version'
|
|
17
16
|
|
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rggen-core
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.36.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Taichi Ishitani
|
|
8
8
|
bindir: exe
|
|
9
9
|
cert_chain: []
|
|
10
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
11
|
dependencies:
|
|
12
12
|
- !ruby/object:Gem::Dependency
|
|
13
13
|
name: docile
|
|
@@ -71,6 +71,20 @@ dependencies:
|
|
|
71
71
|
- - ">="
|
|
72
72
|
- !ruby/object:Gem::Version
|
|
73
73
|
version: '2.0'
|
|
74
|
+
- !ruby/object:Gem::Dependency
|
|
75
|
+
name: yps
|
|
76
|
+
requirement: !ruby/object:Gem::Requirement
|
|
77
|
+
requirements:
|
|
78
|
+
- - ">="
|
|
79
|
+
- !ruby/object:Gem::Version
|
|
80
|
+
version: 1.0.0
|
|
81
|
+
type: :runtime
|
|
82
|
+
prerelease: false
|
|
83
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
84
|
+
requirements:
|
|
85
|
+
- - ">="
|
|
86
|
+
- !ruby/object:Gem::Version
|
|
87
|
+
version: 1.0.0
|
|
74
88
|
description: Core library of RgGen tool.
|
|
75
89
|
email:
|
|
76
90
|
- rggen@googlegroups.com
|
|
@@ -198,14 +212,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
198
212
|
requirements:
|
|
199
213
|
- - ">="
|
|
200
214
|
- !ruby/object:Gem::Version
|
|
201
|
-
version: 3.
|
|
215
|
+
version: 3.2.0
|
|
202
216
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
203
217
|
requirements:
|
|
204
218
|
- - ">="
|
|
205
219
|
- !ruby/object:Gem::Version
|
|
206
220
|
version: '0'
|
|
207
221
|
requirements: []
|
|
208
|
-
rubygems_version:
|
|
222
|
+
rubygems_version: 4.0.3
|
|
209
223
|
specification_version: 4
|
|
210
|
-
summary: rggen-core-0.
|
|
224
|
+
summary: rggen-core-0.36.0
|
|
211
225
|
test_files: []
|