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 +7 -0
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +5 -0
- data/LICENSE.md +13 -0
- data/README.md +66 -0
- data/lib/ast/crispr/yaml/psych/version.rb +17 -0
- data/lib/ast/crispr/yaml/psych.rb +191 -0
- data/lib/ast-crispr-yaml-psych.rb +9 -0
- data/sig/ast/crispr/yaml/psych.rbs +12 -0
- data.tar.gz.sig +0 -0
- metadata +346 -0
- metadata.gz.sig +2 -0
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
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
|
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
|