ast-crispr-yaml-psych 7.1.13

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 83bfe32894bc41b2fc9ea5920d4d5e51bf9a894b3e4e08961f91c93ada276f2b
4
+ data.tar.gz: 6186371770d6ca29b563d83ee71c47e64764a368adc5d36c6366b8c72b0c46fb
5
+ SHA512:
6
+ metadata.gz: d6dcb5881e5ef1ad4cfbcff62f8541db86f2cd1d195c62f99bdf318b55adcfe42e9d9b4ad522a5cfb49e029c6d2cfce7f12abd6b4f6add5b2813c1445d7faf34
7
+ data.tar.gz: 4384122561db85b3f70b149f4320442dd7f79cf94401d7dcab4357f81a89d64e8939010f5787048eec12c4c311a2796983aeeee5b2acf3db998761183743e4e5
checksums.yaml.gz.sig ADDED
Binary file
data/CHANGELOG.md ADDED
@@ -0,0 +1,5 @@
1
+ ## [Unreleased]
2
+
3
+ ## [0.1.0] - 2026-10-18
4
+
5
+ - Initial release
data/LICENSE.md ADDED
@@ -0,0 +1,13 @@
1
+ # License
2
+
3
+ This project is made available under the following licenses.
4
+ Choose the option that best fits your use case:
5
+
6
+ - [AGPL-3.0-only](https://github.com/structuredmerge/structuredmerge-ruby/blob/main/AGPL-3.0-only.md)
7
+ - [PolyForm-Small-Business-1.0.0](https://github.com/structuredmerge/structuredmerge-ruby/blob/main/PolyForm-Small-Business-1.0.0.md)
8
+
9
+ If none of the above licenses fit your use case, please [contact us](mailto:floss@galtzo.com) to discuss a custom commercial license.
10
+
11
+ ## Copyright Notice
12
+
13
+ - Required Notice: Copyright (c) 2026 Peter H. Boling
data/README.md ADDED
@@ -0,0 +1,66 @@
1
+ # ast-crispr-yaml-psych
2
+
3
+ `ast-crispr-yaml-psych` connects [ast-crispr](https://github.com/structuredmerge/structuredmerge-ruby) to `psych-merge`, providing YAML structural owners and selectors for AST-aware edits.
4
+
5
+ ## Synopsis
6
+
7
+ `ast-crispr-yaml-psych` connects [ast-crispr](https://github.com/structuredmerge/structuredmerge-ruby) to `psych-merge`. It provides structural owners and selectors for editing YAML by mapping entry or sequence item while retaining YAML layout and comments.
8
+
9
+ ## Configuration
10
+
11
+ Require the gem in your Ruby application; it registers the YAML/Psych adapter with ast-crispr:
12
+
13
+ ```ruby
14
+ require "ast-crispr-yaml-psych"
15
+ ```
16
+
17
+ No separate configuration file is needed. Selectors take a `path` array of mapping keys and, for sequence items, a zero-based `index`. Use an array so keys containing dots are treated as single keys. Available owner scopes include `:mapping_entries`, `:nested_mapping_entries`, and `:sequence_items`.
18
+
19
+ ## Basic Usage
20
+
21
+ ```ruby
22
+ require "ast-crispr-yaml-psych"
23
+
24
+ source = <<~YAML
25
+ jobs:
26
+ test:
27
+ strategy:
28
+ matrix:
29
+ include:
30
+ - os: ubuntu-latest
31
+ - os: macos-latest
32
+ YAML
33
+
34
+ target = Ast::Crispr::Yaml::Psych::Selectors.sequence_item(
35
+ path: %w[jobs test strategy matrix include],
36
+ index: 1
37
+ )
38
+
39
+ result = Ast::Crispr::Delete.result(content: source, target: target)
40
+ puts result.updated_content
41
+ ```
42
+
43
+ The selector identifies the second item under `jobs.test.strategy.matrix.include`; `Ast::Crispr::Delete.result` performs the structural edit. Nested sibling groups retain their layout gaps through `psych-merge`, preserving separator and blank-line ownership at each YAML level.
44
+
45
+ ## Development
46
+
47
+ Run the gem's specs from this directory with `bundle exec kettle-test`. The monorepo root Gemfile includes the gem for family-level development.
48
+
49
+ ## 🔐 Security
50
+
51
+ See [SECURITY.md][🔐security].
52
+
53
+ ## 🤝 Contributing
54
+
55
+ See [CONTRIBUTING.md][🤝contributing] for more detailed instructions.
56
+
57
+ See [CODE_OF_CONDUCT.md][🪇conduct].
58
+
59
+ ## 📌 Changelog
60
+
61
+ See [CHANGELOG.md][📌changelog] for a list of releases.
62
+
63
+ [🤝contributing]: https://github.com/structuredmerge/structuredmerge-ruby/blob/main/CONTRIBUTING.md
64
+ [🪇conduct]: https://github.com/structuredmerge/structuredmerge-ruby/blob/main/CODE_OF_CONDUCT.md
65
+ [📌changelog]: https://github.com/structuredmerge/structuredmerge-ruby/blob/main/CHANGELOG.md
66
+ [🔐security]: https://github.com/structuredmerge/structuredmerge-ruby/blob/main/SECURITY.md
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Ast
4
+ module Crispr
5
+ module Yaml
6
+ module Psych
7
+ # Version namespace for this gem.
8
+ module Version
9
+ # Current gem version.
10
+ VERSION = "7.1.13"
11
+ end
12
+ # Current gem version exposed at the traditional constant location.
13
+ VERSION = Version::VERSION # Traditional Constant Location
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,191 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "ast/crispr"
4
+ require "psych/merge"
5
+ require_relative "psych/version"
6
+
7
+ module Ast
8
+ module Crispr
9
+ module Yaml
10
+ module Psych
11
+ # A YAML structural owner backed by a Psych Merge node wrapper.
12
+ Owner = Struct.new(:location, :key, :path, :kind, :index, :wrapper, keyword_init: true) do
13
+ def node
14
+ wrapper.node
15
+ end
16
+
17
+ def start_line
18
+ location.start_line
19
+ end
20
+
21
+ def end_line
22
+ location.end_line
23
+ end
24
+ end
25
+
26
+ class Adapter
27
+ def read_ast(document)
28
+ analysis = ::Psych::Merge::FileAnalysis.new(document.content, source_label: document.source_label)
29
+ return analysis if analysis.valid?
30
+
31
+ raise Ast::Crispr::Error.new(
32
+ "Unable to read structural owners from #{document.source_label}",
33
+ details: { source_label: document.source_label, errors: analysis.errors }
34
+ )
35
+ end
36
+
37
+ def structural_owners(document, owner_scope: :shared_default)
38
+ groups = statement_groups(document)
39
+ case owner_scope
40
+ when :shared_default, :top_level_statements
41
+ groups.first || []
42
+ when :mapping_entries
43
+ groups.flatten.select { |owner| owner.kind == :mapping_entry }
44
+ when :nested_mapping_entries
45
+ groups.flatten.select { |owner| owner.kind == :mapping_entry && owner.path.length > 1 }
46
+ when :sequence_items
47
+ groups.flatten.select { |owner| owner.kind == :sequence_item }
48
+ when :all_statements
49
+ groups.flatten
50
+ else
51
+ raise Ast::Crispr::Error.new("Unsupported CRISPR owner scope", details: { owner_scope: owner_scope })
52
+ end
53
+ end
54
+
55
+ def comment_regions_for(document, owner, region: :leading, owner_scope: :shared_default)
56
+ unless %i[leading trailing].include?(region.to_sym)
57
+ raise Ast::Crispr::Error.new(
58
+ "Unsupported CRISPR comment region",
59
+ details: { region: region, owner_scope: owner_scope }
60
+ )
61
+ end
62
+
63
+ attachment = document.ast.comment_attachment_for(owner.wrapper)
64
+ [attachment.public_send("#{region}_region")].compact
65
+ end
66
+
67
+ def comment_region_text(_document, comment_region)
68
+ comment_region.text
69
+ end
70
+
71
+ def structure_profile(owner_scope: :shared_default)
72
+ supported_scopes = %i[
73
+ shared_default top_level_statements mapping_entries nested_mapping_entries sequence_items all_statements
74
+ ]
75
+ unless supported_scopes.include?(owner_scope.to_sym)
76
+ raise Ast::Crispr::Error.new("Unsupported CRISPR owner scope", details: { owner_scope: owner_scope })
77
+ end
78
+
79
+ Ast::Crispr::StructureProfile.new(
80
+ owner_scope: owner_scope,
81
+ owner_selector: :line_bound_statements,
82
+ supported_comment_regions: %i[leading trailing],
83
+ metadata: { adapter: :yaml_psych, selector: owner_scope }
84
+ )
85
+ end
86
+
87
+ # Sibling groups preserve YAML's nested ownership boundaries for
88
+ # comment selection and structural layout calculations.
89
+ def statement_groups(document)
90
+ analysis = document.ast
91
+ analysis.structural_owner_groups.map do |group|
92
+ group.map do |wrapper|
93
+ metadata = analysis.structural_owner_metadata_for(wrapper)
94
+ start_line = wrapper.start_line || 1
95
+ end_line = wrapper.end_line || start_line
96
+ Owner.new(
97
+ location: ::Ast::Merge::AstNode::Location.new(start_line: start_line, end_line: end_line),
98
+ key: wrapper.key,
99
+ path: metadata.fetch(:path),
100
+ kind: metadata.fetch(:kind),
101
+ index: metadata[:index],
102
+ wrapper: wrapper
103
+ )
104
+ end
105
+ end
106
+ end
107
+
108
+ def layout_attachment_for(document, owner, **options)
109
+ document.ast.layout_attachment_for(owner.wrapper, **options)
110
+ end
111
+
112
+ end
113
+
114
+ module Selectors
115
+ module_function
116
+
117
+ def owner_filter(id:, limit: nil, owner_scope: :shared_default, include_trailing_gap: false, metadata: {},
118
+ &block)
119
+ Ast::Crispr::Selectors.owner_filter(
120
+ id: id,
121
+ limit: limit,
122
+ owner_scope: owner_scope,
123
+ include_trailing_gap: include_trailing_gap,
124
+ adapter: Ast::Crispr::Yaml::Psych.adapter,
125
+ metadata: metadata,
126
+ &block
127
+ )
128
+ end
129
+
130
+ def mapping_entry(path:, id: nil, limit: nil, metadata: {}, **options)
131
+ expected_path = normalize_path(path)
132
+ owner_filter(
133
+ id: id || "yaml_mapping_entry_#{expected_path.join(".")}",
134
+ limit: limit,
135
+ owner_scope: :mapping_entries,
136
+ metadata: metadata.merge(options)
137
+ ) { |_context, owner| owner.path == expected_path }
138
+ end
139
+
140
+ def sequence_item(path:, index:, id: nil, limit: nil, metadata: {}, **options)
141
+ expected_path = normalize_path(path) + [Integer(index)]
142
+ owner_filter(
143
+ id: id || "yaml_sequence_item_#{expected_path.join(".")}",
144
+ limit: limit,
145
+ owner_scope: :sequence_items,
146
+ metadata: metadata.merge(options)
147
+ ) { |_context, owner| owner.path == expected_path }
148
+ end
149
+
150
+ def comment_region_owned_owner(marker:, id: nil, limit: nil, owner_scope: :shared_default,
151
+ comment_region: :leading, include_trailing_gap: true, metadata: {}, **options)
152
+ Ast::Crispr::Selectors.comment_region_owned_owner(
153
+ marker: marker,
154
+ id: id,
155
+ limit: limit,
156
+ owner_scope: owner_scope,
157
+ comment_region: comment_region,
158
+ include_trailing_gap: include_trailing_gap,
159
+ adapter: Ast::Crispr::Yaml::Psych.adapter,
160
+ metadata: metadata,
161
+ **options
162
+ )
163
+ end
164
+
165
+ def normalize_path(path)
166
+ path.is_a?(Array) ? path : path.to_s.split(".").reject(&:empty?)
167
+ end
168
+ private_class_method :normalize_path
169
+ end
170
+
171
+ Targets = Selectors
172
+
173
+ class << self
174
+ def adapter
175
+ @adapter ||= Adapter.new
176
+ end
177
+
178
+ def document_context(content:, source_label: "source", metadata: {}, **options)
179
+ Ast::Crispr::DocumentContext.new(
180
+ content: content,
181
+ source_label: source_label,
182
+ adapter: adapter,
183
+ metadata: metadata,
184
+ **options
185
+ )
186
+ end
187
+ end
188
+ end
189
+ end
190
+ end
191
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "ast/crispr/yaml/psych"
4
+ require "version_gem"
5
+ require_relative "ast/crispr/yaml/psych/version"
6
+
7
+ Ast::Crispr::Yaml::Psych::Version.class_eval do
8
+ extend VersionGem::Basic
9
+ end
@@ -0,0 +1,12 @@
1
+ module Ast
2
+ module Crispr
3
+ module Yaml
4
+ module Psych
5
+ module Version
6
+ VERSION: String
7
+ end
8
+ VERSION: String
9
+ end
10
+ end
11
+ end
12
+ end
data.tar.gz.sig ADDED
Binary file
metadata ADDED
@@ -0,0 +1,346 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ast-crispr-yaml-psych
3
+ version: !ruby/object:Gem::Version
4
+ version: 7.1.13
5
+ platform: ruby
6
+ authors:
7
+ - Peter H. Boling
8
+ bindir: exe
9
+ cert_chain:
10
+ - |
11
+ -----BEGIN CERTIFICATE-----
12
+ MIIEgDCCAuigAwIBAgIBATANBgkqhkiG9w0BAQsFADBDMRUwEwYDVQQDDAxwZXRl
13
+ ci5ib2xpbmcxFTATBgoJkiaJk/IsZAEZFgVnbWFpbDETMBEGCgmSJomT8ixkARkW
14
+ A2NvbTAeFw0yNTA1MDQxNTMzMDlaFw00NTA0MjkxNTMzMDlaMEMxFTATBgNVBAMM
15
+ DHBldGVyLmJvbGluZzEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMwEQYKCZImiZPy
16
+ LGQBGRYDY29tMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAruUoo0WA
17
+ uoNuq6puKWYeRYiZekz/nsDeK5x/0IEirzcCEvaHr3Bmz7rjo1I6On3gGKmiZs61
18
+ LRmQ3oxy77ydmkGTXBjruJB+pQEn7UfLSgQ0xa1/X3kdBZt6RmabFlBxnHkoaGY5
19
+ mZuZ5+Z7walmv6sFD9ajhzj+oIgwWfnEHkXYTR8I6VLN7MRRKGMPoZ/yvOmxb2DN
20
+ coEEHWKO9CvgYpW7asIihl/9GMpKiRkcYPm9dGQzZc6uTwom1COfW0+ZOFrDVBuV
21
+ FMQRPswZcY4Wlq0uEBLPU7hxnCL9nKK6Y9IhdDcz1mY6HZ91WImNslOSI0S8hRpj
22
+ yGOWxQIhBT3fqCBlRIqFQBudrnD9jSNpSGsFvbEijd5ns7Z9ZMehXkXDycpGAUj1
23
+ to/5cuTWWw1JqUWrKJYoifnVhtE1o1DZ+LkPtWxHtz5kjDG/zR3MG0Ula0UOavlD
24
+ qbnbcXPBnwXtTFeZ3C+yrWpE4pGnl3yGkZj9SMTlo9qnTMiPmuWKQDatAgMBAAGj
25
+ fzB9MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQWBBQE8uWvNbPVNRXZ
26
+ HlgPbc2PCzC4bjAhBgNVHREEGjAYgRZwZXRlci5ib2xpbmdAZ21haWwuY29tMCEG
27
+ A1UdEgQaMBiBFnBldGVyLmJvbGluZ0BnbWFpbC5jb20wDQYJKoZIhvcNAQELBQAD
28
+ ggGBAJbnUwfJQFPkBgH9cL7hoBfRtmWiCvdqdjeTmi04u8zVNCUox0A4gT982DE9
29
+ wmuN12LpdajxZONqbXuzZvc+nb0StFwmFYZG6iDwaf4BPywm2e/Vmq0YG45vZXGR
30
+ L8yMDSK1cQXjmA+ZBKOHKWavxP6Vp7lWvjAhz8RFwqF9GuNIdhv9NpnCAWcMZtpm
31
+ GUPyIWw/Cw/2wZp74QzZj6Npx+LdXoLTF1HMSJXZ7/pkxLCsB8m4EFVdb/IrW/0k
32
+ kNSfjtAfBHO8nLGuqQZVH9IBD1i9K6aSs7pT6TW8itXUIlkIUI2tg5YzW6OFfPzq
33
+ QekSkX3lZfY+HTSp/o+YvKkqWLUV7PQ7xh1ZYDtocpaHwgxe/j3bBqHE+CUPH2vA
34
+ 0V/FwdTRWcwsjVoOJTrYcff8pBZ8r2MvtAc54xfnnhGFzeRHfcltobgFxkAXdE6p
35
+ DVjBtqT23eugOqQ73umLcYDZkc36vnqGxUBSsXrzY9pzV5gGr2I8YUxMqf6ATrZt
36
+ L9nRqA==
37
+ -----END CERTIFICATE-----
38
+ date: 1980-01-02 00:00:00.000000000 Z
39
+ dependencies:
40
+ - !ruby/object:Gem::Dependency
41
+ name: version_gem
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '1.1'
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: 1.1.15
50
+ type: :runtime
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - "~>"
55
+ - !ruby/object:Gem::Version
56
+ version: '1.1'
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: 1.1.15
60
+ - !ruby/object:Gem::Dependency
61
+ name: ast-crispr
62
+ requirement: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - '='
65
+ - !ruby/object:Gem::Version
66
+ version: 7.1.13
67
+ type: :runtime
68
+ prerelease: false
69
+ version_requirements: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - '='
72
+ - !ruby/object:Gem::Version
73
+ version: 7.1.13
74
+ - !ruby/object:Gem::Dependency
75
+ name: psych-merge
76
+ requirement: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - '='
79
+ - !ruby/object:Gem::Version
80
+ version: 7.1.13
81
+ type: :runtime
82
+ prerelease: false
83
+ version_requirements: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - '='
86
+ - !ruby/object:Gem::Version
87
+ version: 7.1.13
88
+ - !ruby/object:Gem::Dependency
89
+ name: kettle-dev
90
+ requirement: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - "~>"
93
+ - !ruby/object:Gem::Version
94
+ version: '3.1'
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: 3.1.15
98
+ type: :development
99
+ prerelease: false
100
+ version_requirements: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - "~>"
103
+ - !ruby/object:Gem::Version
104
+ version: '3.1'
105
+ - - ">="
106
+ - !ruby/object:Gem::Version
107
+ version: 3.1.15
108
+ - !ruby/object:Gem::Dependency
109
+ name: bundler-audit
110
+ requirement: !ruby/object:Gem::Requirement
111
+ requirements:
112
+ - - "~>"
113
+ - !ruby/object:Gem::Version
114
+ version: 0.9.3
115
+ type: :development
116
+ prerelease: false
117
+ version_requirements: !ruby/object:Gem::Requirement
118
+ requirements:
119
+ - - "~>"
120
+ - !ruby/object:Gem::Version
121
+ version: 0.9.3
122
+ - !ruby/object:Gem::Dependency
123
+ name: rake
124
+ requirement: !ruby/object:Gem::Requirement
125
+ requirements:
126
+ - - "~>"
127
+ - !ruby/object:Gem::Version
128
+ version: '13.0'
129
+ type: :development
130
+ prerelease: false
131
+ version_requirements: !ruby/object:Gem::Requirement
132
+ requirements:
133
+ - - "~>"
134
+ - !ruby/object:Gem::Version
135
+ version: '13.0'
136
+ - !ruby/object:Gem::Dependency
137
+ name: require_bench
138
+ requirement: !ruby/object:Gem::Requirement
139
+ requirements:
140
+ - - "~>"
141
+ - !ruby/object:Gem::Version
142
+ version: '1.0'
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: 1.0.4
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '1.0'
153
+ - - ">="
154
+ - !ruby/object:Gem::Version
155
+ version: 1.0.4
156
+ - !ruby/object:Gem::Dependency
157
+ name: anonymous_loader
158
+ requirement: !ruby/object:Gem::Requirement
159
+ requirements:
160
+ - - "~>"
161
+ - !ruby/object:Gem::Version
162
+ version: '0.1'
163
+ - - ">="
164
+ - !ruby/object:Gem::Version
165
+ version: 0.1.3
166
+ type: :development
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - "~>"
171
+ - !ruby/object:Gem::Version
172
+ version: '0.1'
173
+ - - ">="
174
+ - !ruby/object:Gem::Version
175
+ version: 0.1.3
176
+ - !ruby/object:Gem::Dependency
177
+ name: appraisal2
178
+ requirement: !ruby/object:Gem::Requirement
179
+ requirements:
180
+ - - "~>"
181
+ - !ruby/object:Gem::Version
182
+ version: '3.2'
183
+ - - ">="
184
+ - !ruby/object:Gem::Version
185
+ version: 3.2.5
186
+ type: :development
187
+ prerelease: false
188
+ version_requirements: !ruby/object:Gem::Requirement
189
+ requirements:
190
+ - - "~>"
191
+ - !ruby/object:Gem::Version
192
+ version: '3.2'
193
+ - - ">="
194
+ - !ruby/object:Gem::Version
195
+ version: 3.2.5
196
+ - !ruby/object:Gem::Dependency
197
+ name: kettle-test
198
+ requirement: !ruby/object:Gem::Requirement
199
+ requirements:
200
+ - - "~>"
201
+ - !ruby/object:Gem::Version
202
+ version: '2.0'
203
+ - - ">="
204
+ - !ruby/object:Gem::Version
205
+ version: 2.0.27
206
+ type: :development
207
+ prerelease: false
208
+ version_requirements: !ruby/object:Gem::Requirement
209
+ requirements:
210
+ - - "~>"
211
+ - !ruby/object:Gem::Version
212
+ version: '2.0'
213
+ - - ">="
214
+ - !ruby/object:Gem::Version
215
+ version: 2.0.27
216
+ - !ruby/object:Gem::Dependency
217
+ name: turbo_tests2
218
+ requirement: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - "~>"
221
+ - !ruby/object:Gem::Version
222
+ version: '3.2'
223
+ - - ">="
224
+ - !ruby/object:Gem::Version
225
+ version: 3.2.14
226
+ type: :development
227
+ prerelease: false
228
+ version_requirements: !ruby/object:Gem::Requirement
229
+ requirements:
230
+ - - "~>"
231
+ - !ruby/object:Gem::Version
232
+ version: '3.2'
233
+ - - ">="
234
+ - !ruby/object:Gem::Version
235
+ version: 3.2.14
236
+ - !ruby/object:Gem::Dependency
237
+ name: ruby-progressbar
238
+ requirement: !ruby/object:Gem::Requirement
239
+ requirements:
240
+ - - "~>"
241
+ - !ruby/object:Gem::Version
242
+ version: '1.13'
243
+ type: :development
244
+ prerelease: false
245
+ version_requirements: !ruby/object:Gem::Requirement
246
+ requirements:
247
+ - - "~>"
248
+ - !ruby/object:Gem::Version
249
+ version: '1.13'
250
+ - !ruby/object:Gem::Dependency
251
+ name: stone_checksums
252
+ requirement: !ruby/object:Gem::Requirement
253
+ requirements:
254
+ - - "~>"
255
+ - !ruby/object:Gem::Version
256
+ version: '1.0'
257
+ - - ">="
258
+ - !ruby/object:Gem::Version
259
+ version: 1.0.9
260
+ type: :development
261
+ prerelease: false
262
+ version_requirements: !ruby/object:Gem::Requirement
263
+ requirements:
264
+ - - "~>"
265
+ - !ruby/object:Gem::Version
266
+ version: '1.0'
267
+ - - ">="
268
+ - !ruby/object:Gem::Version
269
+ version: 1.0.9
270
+ - !ruby/object:Gem::Dependency
271
+ name: gitmoji-regex
272
+ requirement: !ruby/object:Gem::Requirement
273
+ requirements:
274
+ - - "~>"
275
+ - !ruby/object:Gem::Version
276
+ version: '2.0'
277
+ - - ">="
278
+ - !ruby/object:Gem::Version
279
+ version: 2.0.15
280
+ type: :development
281
+ prerelease: false
282
+ version_requirements: !ruby/object:Gem::Requirement
283
+ requirements:
284
+ - - "~>"
285
+ - !ruby/object:Gem::Version
286
+ version: '2.0'
287
+ - - ">="
288
+ - !ruby/object:Gem::Version
289
+ version: 2.0.15
290
+ description: "\U0001F9EC YAML structural owner selectors and edit helpers for ast-crispr."
291
+ email:
292
+ - floss@galtzo.com
293
+ executables: []
294
+ extensions: []
295
+ extra_rdoc_files: []
296
+ files:
297
+ - CHANGELOG.md
298
+ - LICENSE.md
299
+ - README.md
300
+ - lib/ast-crispr-yaml-psych.rb
301
+ - lib/ast/crispr/yaml/psych.rb
302
+ - lib/ast/crispr/yaml/psych/version.rb
303
+ - sig/ast/crispr/yaml/psych.rbs
304
+ homepage: https://github.com/structuredmerge/structuredmerge-ruby
305
+ licenses:
306
+ - AGPL-3.0-only
307
+ - PolyForm-Small-Business-1.0.0
308
+ metadata:
309
+ homepage_uri: https://structuredmerge.org
310
+ source_code_uri: https://github.com/structuredmerge/structuredmerge-ruby/tree/v7.1.13
311
+ changelog_uri: https://github.com/structuredmerge/structuredmerge-ruby/blob/v7.1.13/CHANGELOG.md
312
+ bug_tracker_uri: https://github.com/structuredmerge/structuredmerge-ruby/issues
313
+ documentation_uri: https://www.rubydoc.info/gems/ast-crispr-yaml-psych/7.1.13
314
+ funding_uri: https://github.com/sponsors/pboling
315
+ wiki_uri: https://github.com/structuredmerge/structuredmerge-ruby/wiki
316
+ news_uri: https://www.railsbling.com/tags/ast-crispr-yaml-psych
317
+ discord_uri: https://discord.gg/3qme4XHNKN
318
+ mailing_list_uri: https://www.rubyforum.org/tag/structuredmerge
319
+ rubygems_mfa_required: 'true'
320
+ rdoc_options:
321
+ - "--title"
322
+ - "ast-crispr-yaml-psych - \U0001F9EC Psych adapter for AST CRISPR structural edits"
323
+ - "--main"
324
+ - README.md
325
+ - "--exclude"
326
+ - "^sig/"
327
+ - "--line-numbers"
328
+ - "--inline-source"
329
+ - "--quiet"
330
+ require_paths:
331
+ - lib
332
+ required_ruby_version: !ruby/object:Gem::Requirement
333
+ requirements:
334
+ - - ">="
335
+ - !ruby/object:Gem::Version
336
+ version: 4.0.0
337
+ required_rubygems_version: !ruby/object:Gem::Requirement
338
+ requirements:
339
+ - - ">="
340
+ - !ruby/object:Gem::Version
341
+ version: '0'
342
+ requirements: []
343
+ rubygems_version: 4.0.20
344
+ specification_version: 4
345
+ summary: "\U0001F9EC Psych adapter for AST CRISPR structural edits"
346
+ test_files: []
metadata.gz.sig ADDED
@@ -0,0 +1,2 @@
1
+ @Φ ��AtbMEa���}O�ҧiԲ����=C��;�4�5w;�lT�1N���iu$�'^���}�"�a��� ��O�W�A5�UT��F; �w��� ��t'bn2{[���ǰ��/��w�v(Z[��{�v�~Վ� NDZ)�\�C�nKR�b΍:�aK�����k�iTI5@�ܦܹJE��y�D���5�ݨ�%��m���l�T�+d�pC�+HwV���� ~8)^^�aJ�y�^U�Y�c�0��8���3�y�|�QZ���D=1�`t��wVp����a��ؽd``.��b��U&�1A0!���o���Ƭ��4�(�"ʍI
2
+ �ٱؗ ����}i��2��|[Ɣ�}�<–��{~<T�c_8�D��A�αϻ���W