ast-crispr-ruby-prism 7.1.1

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: 6f92fb6dcd44ba73fa143596092321ef6443b8db074d549b49c0d4756d2876ba
4
+ data.tar.gz: edeae8c5502bfe7259dae03f632536d284fb69eb2d8d3e45a2a2b5d9be6e7fb2
5
+ SHA512:
6
+ metadata.gz: 5c1912fb4f616023319e4eba21c7a15886d697913f1fbe5d1e198256f9d005ed6e418af2847a9f3b7cae0fa76af8f4bdec1d2aa7a6f0be614d5f47553f2eb0e7
7
+ data.tar.gz: d8bd72a99c94eecc4e079aba9065cfb8deb7343ba16850283ea5887a4a4d2cd3b57ff5b35e27bc3d5032d4774ac2649abf652f9d385ecfe65f57d3425277d557
checksums.yaml.gz.sig ADDED
Binary file
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,305 @@
1
+ <a href="https://github.com/structuredmerge"><img alt="structuredmerge Logo by GitHub" src="https://github.com/structuredmerge.png?size=192" width="14%" align="right"/></a>
2
+
3
+ # 🧬 Ast::Crispr::Ruby::Prism
4
+
5
+ [![Version][👽versioni]][👽version] [![Ruby Users Forum][✉️ruby-forum-top-img]][✉️ruby-forum] [![GitHub tag (latest SemVer)][⛳️tag-img]][⛳️tag] [![License: AGPL-3.0-only OR PolyForm-Small-Business-1.0.0][📄license-img]][📄license] [![Total downloads][👽dl-ranki]][👽dl-rank] [![CI Current][🚎11-c-wfi]][🚎11-c-wf]
6
+
7
+ `if ci_badges.map(&:color).detect { it != "green"}` ☝️ [let me know on Discord][✉️discord-invite] or [RubyForum][✉️ruby-forum], as I may have missed the notification.
8
+
9
+ ---
10
+
11
+ `if ci_badges.map(&:color).all? { it == "green"}` 👇️ send money so I can do more of this. FLOSS maintenance is now my full-time job.
12
+
13
+ [![Sponsor Me on Github][🖇sponsor-img]][🖇sponsor] [![Liberapay Goal Progress][⛳liberapay-img]][⛳liberapay] [![Donate on PayPal][🖇paypal-img]][🖇paypal] [![Buy me a coffee][🖇buyme-small-img]][🖇buyme] [![Donate at ko-fi.com][🖇kofi-img]][🖇kofi]
14
+
15
+ <details markdown="1">
16
+ <summary>👣 How will this project approach the September 2025 hostile takeover of RubyGems? 🚑️</summary>
17
+
18
+ I've summarized my thoughts in [this blog post](https://dev.to/galtzo/hostile-takeover-of-rubygems-my-thoughts-5hlo).
19
+
20
+ </details>
21
+
22
+ ## 🌻 Synopsis <a href="https://discord.gg/3qme4XHNKN"><img alt="Galtzo FLOSS Logo by Aboling0, CC BY-SA 4.0" src="https://logos.galtzo.com/assets/images/galtzo-floss/avatar-128px.svg" width="8%" align="right"/></a> <a href="https://ruby-toolbox.com"><img alt="ruby-lang Logo, Yukihiro Matsumoto, Ruby Visual Identity Team, CC BY-SA 2.5" src="https://logos.galtzo.com/assets/images/ruby-lang/avatar-128px.svg" width="8%" align="right"/></a>
23
+
24
+ `ast-crispr-ruby-prism` is the Ruby/Prism adapter for `ast-crispr`. It exposes Ruby structural owners such as requires, constants, class/module declarations, method definitions, and other Prism-backed syntax nodes for precise structured edits.
25
+
26
+ ### Key Features
27
+
28
+ - Prism-backed Ruby document contexts.
29
+ - Selectors for Ruby declarations and statement owners.
30
+ - Source-range replacement that preserves unrelated file content.
31
+ - Metadata suitable for review reports and structured-edit diagnostics.
32
+
33
+ ## 💡 Info you can shake a stick at
34
+
35
+ | Tokens to Remember | [![Gem name][⛳️name-img]][⛳️gem-name] [![Gem namespace][⛳️namespace-img]][⛳️gem-namespace] |
36
+ |-------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
37
+ | Works with MRI Ruby 4 | [![Ruby current Compat][💎ruby-c-i]][🚎11-c-wf]|
38
+ | Support & Community | [![Join Me on Daily.dev's RubyFriends][✉️ruby-friends-img]][✉️ruby-friends] [![Get help from RubyForum][✉️ruby-forum-img]][✉️ruby-forum] [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite] [![Get help from me on Upwork][👨🏼‍🏫expsup-upwork-img]][👨🏼‍🏫expsup-upwork] [![Get help from me on Codementor][👨🏼‍🏫expsup-codementor-img]][👨🏼‍🏫expsup-codementor] |
39
+ | Source | [![Source on GitLab.com][📜src-gl-img]][📜src-gl] [![Source on CodeBerg.org][📜src-cb-img]][📜src-cb] [![Source on GitHub.com][📜src-gh-img]][📜src-gh] [![The best SHA: dQw4w9WgXcQ!][🧮kloc-img]][🧮kloc] |
40
+ | Documentation | [![Current release on RubyDoc.info][📜docs-cr-rd-img]][🚎yard-current] [![YARD on Galtzo.com][📜docs-head-rd-img]][🚎yard-head] [![Maintainer Blog][🚂maint-blog-img]][🚂maint-blog] [![GitLab Wiki][📜gl-wiki-img]][📜gl-wiki] [![GitHub Wiki][📜gh-wiki-img]][📜gh-wiki] |
41
+ | Compliance | [![License: AGPL-3.0-only OR PolyForm-Small-Business-1.0.0][📄license-img]][📄license] [![Apache license compatibility: Category X][📄license-compat-img]][📄license-compat] [![📄ilo-declaration-img]][📄ilo-declaration] [![Security Policy][🔐security-img]][🔐security] [![Contributor Covenant 2.1][🪇conduct-img]][🪇conduct] [![SemVer 2.0.0][📌semver-img]][📌semver] |
42
+ | Style | [![Enforced Code Style Linter][💎rlts-img]][💎rlts] [![Keep-A-Changelog 1.0.0][📗keep-changelog-img]][📗keep-changelog] [![Gitmoji Commits][📌gitmoji-img]][📌gitmoji] [![Compatibility appraised by: appraisal2][💎appraisal2-img]][💎appraisal2] |
43
+ | Maintainer 🎖️ | [![Follow Me on LinkedIn][💖🖇linkedin-img]][💖🖇linkedin] [![Follow Me on Ruby.Social][💖🐘ruby-mast-img]][💖🐘ruby-mast] [![Follow Me on Bluesky][💖🦋bluesky-img]][💖🦋bluesky] [![Contact Maintainer][🚂maint-contact-img]][🚂maint-contact] [![My technical writing][💖💁🏼‍♂️devto-img]][💖💁🏼‍♂️devto] |
44
+ | `...` 💖 | [![Find Me on WellFound:][💖✌️wellfound-img]][💖✌️wellfound] [![Find Me on CrunchBase][💖💲crunchbase-img]][💖💲crunchbase] [![My LinkTree][💖🌳linktree-img]][💖🌳linktree] [![More About Me][💖💁🏼‍♂️aboutme-img]][💖💁🏼‍♂️aboutme] [🧊][💖🧊berg] [🐙][💖🐙hub] [🛖][💖🛖hut] [🧪][💖🧪lab] |
45
+
46
+ ### Compatibility
47
+
48
+ Compatible with MRI Ruby 4.0.0+, and concordant releases of JRuby, and TruffleRuby.
49
+ CI workflows and Appraisals are generated for MRI Ruby 4.0.0+.
50
+ This test floor is configured by `ruby.test_minimum` in `.kettle-jem.yml` and
51
+ may be higher than the gem's runtime compatibility floor when legacy Rubies are
52
+ not practical for the current toolchain.
53
+
54
+ <a href="https://github.com/kettle-dev"><img alt="kettle-dev Logo by Aboling0, CC BY-SA 4.0" src="https://logos.galtzo.com/assets/images/kettle-dev/avatar-128px.svg" width="14%" align="right"/></a>
55
+
56
+ The _amazing_ test matrix is powered by the kettle-dev stack.
57
+
58
+ <details markdown="1">
59
+ <summary>How kettle-dev manages complexity in tests</summary>
60
+
61
+ | Gem | Source | Role | Total downloads |
62
+ |-----|--------|------|---------------------|
63
+ | [appraisal2](https://clickgems.clickhouse.com/dashboard/appraisal2) | [GitHub](https://github.com/appraisal-rb/appraisal2) | multi-dependency Appraisal matrix generation | [![Total downloads for appraisal2](https://img.shields.io/gem/dt/appraisal2.svg?style=flat-square)](https://clickgems.clickhouse.com/dashboard/appraisal2) |
64
+ | [appraisal2-rubocop](https://clickgems.clickhouse.com/dashboard/appraisal2-rubocop) | [GitHub](https://github.com/appraisal-rb/appraisal2-rubocop) | RuboCop Appraisal generator integration | [![Total downloads for appraisal2-rubocop](https://img.shields.io/gem/dt/appraisal2-rubocop.svg?style=flat-square)](https://clickgems.clickhouse.com/dashboard/appraisal2-rubocop) |
65
+ | [kettle-dev](https://clickgems.clickhouse.com/dashboard/kettle-dev) | [GitHub](https://github.com/kettle-dev/kettle-dev) | development, release, and CI workflow tooling | [![Total downloads for kettle-dev](https://img.shields.io/gem/dt/kettle-dev.svg?style=flat-square)](https://clickgems.clickhouse.com/dashboard/kettle-dev) |
66
+ | [kettle-jem](https://clickgems.clickhouse.com/dashboard/kettle-jem) | [GitHub](https://github.com/kettle-dev/kettle-jem) | Appraisals & CI workflow templates | [![Total downloads for kettle-jem](https://img.shields.io/gem/dt/kettle-jem.svg?style=flat-square)](https://clickgems.clickhouse.com/dashboard/kettle-jem) |
67
+ | [kettle-soup-cover](https://clickgems.clickhouse.com/dashboard/kettle-soup-cover) | [GitHub](https://github.com/kettle-dev/kettle-soup-cover) | SimpleCov coverage policy and reporting | [![Total downloads for kettle-soup-cover](https://img.shields.io/gem/dt/kettle-soup-cover.svg?style=flat-square)](https://clickgems.clickhouse.com/dashboard/kettle-soup-cover) |
68
+ | [kettle-test](https://clickgems.clickhouse.com/dashboard/kettle-test) | [GitHub](https://github.com/kettle-dev/kettle-test) | standard test runner and coverage harness | [![Total downloads for kettle-test](https://img.shields.io/gem/dt/kettle-test.svg?style=flat-square)](https://clickgems.clickhouse.com/dashboard/kettle-test) |
69
+ | [rubocop-lts](https://clickgems.clickhouse.com/dashboard/rubocop-lts) | [GitHub](https://github.com/rubocop-lts/rubocop-lts) | Ruby-version-aware linting | [![Total downloads for rubocop-lts](https://img.shields.io/gem/dt/rubocop-lts.svg?style=flat-square)](https://clickgems.clickhouse.com/dashboard/rubocop-lts) |
70
+ | [turbo_tests2](https://clickgems.clickhouse.com/dashboard/turbo_tests2) | [GitHub](https://github.com/galtzo-floss/turbo_tests2) | parallel test execution | [![Total downloads for turbo_tests2](https://img.shields.io/gem/dt/turbo_tests2.svg?style=flat-square)](https://clickgems.clickhouse.com/dashboard/turbo_tests2) |
71
+
72
+ </details>
73
+
74
+ ## ✨ Installation
75
+
76
+ Install the gem and add to the application's Gemfile by executing:
77
+
78
+ ```console
79
+ bundle add ast-crispr-ruby-prism
80
+ ```
81
+
82
+ If bundler is not being used to manage dependencies, install the gem by executing:
83
+
84
+ ```console
85
+ gem install ast-crispr-ruby-prism
86
+ ```
87
+
88
+ ## ⚙️ Configuration
89
+
90
+ Require the adapter and use its selectors with the core `Ast::Crispr` operations.
91
+
92
+ ```ruby
93
+ require "ast/crispr/ruby/prism"
94
+
95
+ context = Ast::Crispr::Ruby::Prism.document_context(
96
+ content: File.read("lib/example.rb"),
97
+ source_label: "lib/example.rb",
98
+ )
99
+ owners = context.structural_owners(owner_scope: :shared_default)
100
+ ```
101
+
102
+ Use selector limits such as `{ exactly: 1 }`, `{ none_or_one: true }`, or `{ at_least: 0 }` to make edit expectations explicit.
103
+
104
+ ## 🔧 Basic Usage
105
+
106
+ ```ruby
107
+ require "ast/crispr"
108
+ require "ast/crispr/ruby/prism"
109
+
110
+ target = Ast::Crispr::Ruby::Prism::Selectors.require_statement(
111
+ path: "version_gem",
112
+ limit: { none_or_one: true },
113
+ )
114
+
115
+ result = Ast::Crispr::Replace.call(
116
+ content: File.read("lib/example.rb"),
117
+ target: target,
118
+ replacement: "require "version_gem"
119
+ ",
120
+ source_label: "lib/example.rb",
121
+ )
122
+
123
+ File.write("lib/example.rb", result.updated_content)
124
+ ```
125
+
126
+ ## 🔐 Security
127
+
128
+ See [SECURITY.md][🔐security].
129
+
130
+ ## 🤝 Contributing
131
+
132
+ If you need some ideas of where to help, you could work on adding more code coverage,
133
+ or if it is already 💯 (see [below](#code-coverage)) check [issues][🤝gh-issues] or [PRs][🤝gh-pulls],
134
+ or use the gem and think about how it could be better.
135
+
136
+ We [![Keep A Changelog][📗keep-changelog-img]][📗keep-changelog] so if you make changes, remember to update it.
137
+
138
+ See [CONTRIBUTING.md][🤝contributing] for more detailed instructions.
139
+
140
+ ### Code Coverage
141
+
142
+ <details markdown="1">
143
+ <summary>Coverage service badges</summary>
144
+
145
+ </details>
146
+
147
+ ## 📌 Versioning
148
+
149
+ This library follows [![Semantic Versioning 2.0.0][📌semver-img]][📌semver] for its public API where practical.
150
+ For most applications, prefer the [Pessimistic Version Constraint][📌pvc] with two digits of precision.
151
+
152
+ For example:
153
+
154
+ ```ruby
155
+ spec.add_dependency("ast-crispr-ruby-prism", "~> 7.0")
156
+ ```
157
+
158
+ <details markdown="1">
159
+ <summary>📌 Is "Platform Support" part of the public API? More details inside.</summary>
160
+
161
+ Dropping support for a platform can be a breaking change for affected users.
162
+ If a release changes supported platforms, it should be called out clearly in the changelog and versioned with that impact in mind.
163
+
164
+ To get a better understanding of how SemVer is intended to work over a project's lifetime,
165
+ read this article from the creator of SemVer:
166
+
167
+ - ["Major Version Numbers are Not Sacred"][📌major-versions-not-sacred]
168
+
169
+ </details>
170
+
171
+ See [CHANGELOG.md][📌changelog] for a list of releases.
172
+
173
+ ## 📄 License
174
+
175
+ The gem is available under the following licenses: [AGPL-3.0-only](https://github.com/structuredmerge/structuredmerge-ruby/blob/main/AGPL-3.0-only.md), [PolyForm-Small-Business-1.0.0](https://github.com/structuredmerge/structuredmerge-ruby/blob/main/PolyForm-Small-Business-1.0.0.md).
176
+ See [LICENSE.md][📄license] for details.
177
+
178
+ If none of the available licenses suit your use case, please [contact us](mailto:floss@galtzo.com) to discuss a custom commercial license.
179
+
180
+ [⛳liberapay-img]: https://img.shields.io/liberapay/goal/pboling.svg?logo=liberapay&color=a51611&style=flat
181
+ [⛳liberapay-bottom-img]: https://img.shields.io/liberapay/goal/pboling.svg?style=for-the-badge&logo=liberapay&color=a51611
182
+ [⛳liberapay]: https://liberapay.com/pboling/donate
183
+ [🖇sponsor-img]: https://img.shields.io/badge/Sponsor_Me!-pboling.svg?style=social&logo=github
184
+ [🖇sponsor-bottom-img]: https://img.shields.io/badge/Sponsor_Me!-pboling-blue?style=for-the-badge&logo=github
185
+ [🖇sponsor]: https://github.com/sponsors/pboling
186
+ [🖇kofi-img]: https://img.shields.io/badge/ko--fi-%E2%9C%93-a51611.svg?style=flat
187
+ [🖇kofi]: https://ko-fi.com/pboling
188
+ [🖇buyme-small-img]: https://img.shields.io/badge/buy_me_a_coffee-%E2%9C%93-a51611.svg?style=flat
189
+ [🖇buyme-img]: https://img.buymeacoffee.com/button-api/?text=Buy%20me%20a%20latte&emoji=&slug=pboling&button_colour=FFDD00&font_colour=000000&font_family=Cookie&outline_colour=000000&coffee_colour=ffffff
190
+ [🖇buyme]: https://www.buymeacoffee.com/pboling
191
+ [🖇paypal-img]: https://img.shields.io/badge/donate-paypal-a51611.svg?style=flat&logo=paypal
192
+ [🖇paypal-bottom-img]: https://img.shields.io/badge/donate-paypal-a51611.svg?style=for-the-badge&logo=paypal&color=0A0A0A
193
+ [🖇paypal]: https://www.paypal.com/paypalme/peterboling
194
+ [🖇floss-funding.dev]: https://floss-funding.dev
195
+ [🖇floss-funding-gem]: https://github.com/galtzo-floss/floss_funding
196
+ [✉️discord-invite]: https://discord.gg/3qme4XHNKN
197
+ [✉️discord-invite-img-ftb]: https://img.shields.io/discord/1373797679469170758?style=for-the-badge&logo=discord
198
+ [✉️ruby-friends-img]: https://img.shields.io/badge/daily.dev-%F0%9F%92%8E_Ruby_Friends-0A0A0A?style=for-the-badge&logo=dailydotdev&logoColor=white
199
+ [✉️ruby-friends]: https://app.daily.dev/squads/rubyfriends
200
+ [✉️ruby-forum-top-img]: https://img.shields.io/discourse/topics?server=https%3A%2F%2Fwww.rubyforum.org&style=flat&logo=discourse&label=Ruby%20Users%20Forum
201
+ [✉️ruby-forum-img]: https://img.shields.io/discourse/topics?server=https%3A%2F%2Fwww.rubyforum.org&style=for-the-badge&logo=discourse&label=Ruby%20Users%20Forum
202
+ [✉️ruby-forum]: https://www.rubyforum.org/tag/structuredmerge
203
+ [✇bundle-group-pattern]: https://gist.github.com/pboling/4564780
204
+ [⛳️gem-namespace]: https://github.com/structuredmerge/structuredmerge-ruby/tree/main/gems/ast-crispr-ruby-prism
205
+ [⛳️namespace-img]: https://img.shields.io/badge/namespace-Ast::Crispr::Ruby::Prism-3C2D2D.svg?style=square&logo=ruby&logoColor=white
206
+ [⛳️gem-name]: https://clickgems.clickhouse.com/dashboard/ast-crispr-ruby-prism
207
+ [⛳️name-img]: https://img.shields.io/badge/name-ast--crispr--ruby--prism-3C2D2D.svg?style=square&logo=rubygems&logoColor=red
208
+ [⛳️tag-img]: https://img.shields.io/github/tag/structuredmerge/structuredmerge-ruby.svg
209
+ [⛳️tag]: https://github.com/structuredmerge/structuredmerge-ruby/releases
210
+ [🚂maint-blog]: http://www.railsbling.com/tags/ast-crispr-ruby-prism
211
+ [🚂maint-blog-img]: https://img.shields.io/badge/blog-railsbling-0093D0.svg?style=for-the-badge&logo=rubyonrails&logoColor=orange
212
+ [🚂maint-contact]: http://www.railsbling.com/contact
213
+ [🚂maint-contact-img]: https://img.shields.io/badge/Contact-Maintainer-0093D0.svg?style=flat&logo=rubyonrails&logoColor=red
214
+ [💖🖇linkedin]: http://www.linkedin.com/in/peterboling
215
+ [💖🖇linkedin-img]: https://img.shields.io/badge/LinkedIn-Profile-0B66C2?style=flat&logo=newjapanprowrestling
216
+ [💖✌️wellfound]: https://wellfound.com/u/peter-boling
217
+ [💖✌️wellfound-img]: https://img.shields.io/badge/peter--boling-orange?style=flat&logo=wellfound
218
+ [💖💲crunchbase]: https://www.crunchbase.com/person/peter-boling
219
+ [💖💲crunchbase-img]: https://img.shields.io/badge/peter--boling-purple?style=flat&logo=crunchbase
220
+ [💖🐘ruby-mast]: https://ruby.social/@galtzo
221
+ [💖🐘ruby-mast-img]: https://img.shields.io/mastodon/follow/109447111526622197?domain=https://ruby.social&style=flat&logo=mastodon&label=Ruby%20@galtzo
222
+ [💖🦋bluesky]: https://bsky.app/profile/galtzo.com
223
+ [💖🦋bluesky-img]: https://img.shields.io/badge/@galtzo.com-0285FF?style=flat&logo=bluesky&logoColor=white
224
+ [💖🌳linktree]: https://linktr.ee/galtzo
225
+ [💖🌳linktree-img]: https://img.shields.io/badge/galtzo-purple?style=flat&logo=linktree
226
+ [💖💁🏼‍♂️devto]: https://dev.to/galtzo
227
+ [💖💁🏼‍♂️devto-img]: https://img.shields.io/badge/dev.to-0A0A0A?style=flat&logo=devdotto&logoColor=white
228
+ [💖💁🏼‍♂️aboutme]: https://about.me/peter.boling
229
+ [💖💁🏼‍♂️aboutme-img]: https://img.shields.io/badge/about.me-0A0A0A?style=flat&logo=aboutme&logoColor=white
230
+ [💖🧊berg]: https://codeberg.org/pboling
231
+ [💖🐙hub]: https://github.org/pboling
232
+ [💖🛖hut]: https://sr.ht/~galtzo/
233
+ [💖🧪lab]: https://gitlab.com/pboling
234
+ [👨🏼‍🏫expsup-upwork]: https://www.upwork.com/freelancers/~014942e9b056abdf86?mp_source=share
235
+ [👨🏼‍🏫expsup-upwork-img]: https://img.shields.io/badge/UpWork-13544E?style=for-the-badge&logo=Upwork&logoColor=white
236
+ [👨🏼‍🏫expsup-codementor]: https://www.codementor.io/peterboling?utm_source=github&utm_medium=button&utm_term=peterboling&utm_campaign=github
237
+ [👨🏼‍🏫expsup-codementor-img]: https://img.shields.io/badge/CodeMentor-Get_Help-1abc9c?style=for-the-badge&logo=CodeMentor&logoColor=white
238
+ [🏙️entsup-tidelift]: https://tidelift.com/subscription/pkg/rubygems-ast-crispr-ruby-prism?utm_source=rubygems-ast-crispr-ruby-prism&utm_medium=referral&utm_campaign=readme
239
+ [🏙️entsup-tidelift-img]: https://img.shields.io/badge/Tidelift_and_Sonar-Enterprise_Support-FD3456?style=for-the-badge&logo=sonar&logoColor=white
240
+ [🏙️entsup-tidelift-sonar]: https://blog.tidelift.com/tidelift-joins-sonar
241
+ [💁🏼‍♂️peterboling]: http://www.peterboling.com
242
+ [🚂railsbling]: http://www.railsbling.com
243
+ [📜src-gl-img]: https://img.shields.io/badge/GitLab-FBA326?style=for-the-badge&logo=Gitlab&logoColor=orange
244
+ [📜src-gl]: https://gitlab.com/structuredmerge/structuredmerge-ruby/-/tree/main/gems/ast-crispr-ruby-prism
245
+ [📜src-cb-img]: https://img.shields.io/badge/CodeBerg-4893CC?style=for-the-badge&logo=CodeBerg&logoColor=blue
246
+ [📜src-cb]: https://codeberg.org/structuredmerge/structuredmerge-ruby/src/branch/main/gems/ast-crispr-ruby-prism
247
+ [📜src-gh-img]: https://img.shields.io/badge/GitHub-238636?style=for-the-badge&logo=GitHub&logoColor=green
248
+ [📜src-gh]: https://github.com/structuredmerge/structuredmerge-ruby/tree/main/gems/ast-crispr-ruby-prism
249
+ [📜docs-cr-rd-img]: https://img.shields.io/badge/RubyDoc-Current_Release-943CD2?style=for-the-badge&logo=readthedocs&logoColor=white
250
+ [📜docs-head-rd-img]: https://img.shields.io/badge/YARD_on_Galtzo.com-HEAD-943CD2?style=for-the-badge&logo=readthedocs&logoColor=white
251
+ [📜gl-wiki]: https://gitlab.com/structuredmerge/structuredmerge-ruby/-/wikis/home
252
+ [📜gh-wiki]: https://github.com/structuredmerge/structuredmerge-ruby/wiki
253
+ [📜gl-wiki-img]: https://img.shields.io/badge/wiki-gitlab-943CD2.svg?style=for-the-badge&logo=gitlab&logoColor=white
254
+ [📜gh-wiki-img]: https://img.shields.io/badge/wiki-github-943CD2.svg?style=for-the-badge&logo=github&logoColor=white
255
+ [👽dl-rank]: https://clickgems.clickhouse.com/dashboard/ast-crispr-ruby-prism
256
+ [👽dl-ranki]: https://img.shields.io/gem/dt/ast-crispr-ruby-prism.svg
257
+ [👽version]: https://clickgems.clickhouse.com/dashboard/ast-crispr-ruby-prism
258
+ [👽versioni]: https://img.shields.io/gem/v/ast-crispr-ruby-prism.svg
259
+ [🚎11-c-wf]: https://github.com/structuredmerge/structuredmerge-ruby/actions/workflows/current.yml
260
+ [🚎11-c-wfi]: https://github.com/structuredmerge/structuredmerge-ruby/actions/workflows/current.yml/badge.svg
261
+ [💎ruby-c-i]: https://img.shields.io/badge/Ruby-current-CC342D?style=for-the-badge&logo=ruby&logoColor=green
262
+ [🤝gh-issues]: https://github.com/structuredmerge/structuredmerge-ruby/issues
263
+ [🤝gh-pulls]: https://github.com/structuredmerge/structuredmerge-ruby/pulls
264
+ [🤝gl-issues]: https://gitlab.com/structuredmerge/structuredmerge-ruby/-/issues
265
+ [🤝gl-pulls]: https://gitlab.com/structuredmerge/structuredmerge-ruby/-/merge_requests
266
+ [🤝cb-issues]: https://codeberg.org/structuredmerge/structuredmerge-ruby/issues
267
+ [🤝cb-pulls]: https://codeberg.org/structuredmerge/structuredmerge-ruby/pulls
268
+ [🤝cb-donate]: https://donate.codeberg.org/
269
+ [🤝contributing]: https://github.com/structuredmerge/structuredmerge-ruby/blob/main/CONTRIBUTING.md
270
+ [🖐contrib-rocks]: https://contrib.rocks
271
+ [🖐contributors]: https://github.com/structuredmerge/structuredmerge-ruby/graphs/contributors
272
+ [🖐contributors-img]: https://contrib.rocks/image?repo=structuredmerge/structuredmerge-ruby
273
+ [🪇conduct]: https://github.com/structuredmerge/structuredmerge-ruby/blob/main/CODE_OF_CONDUCT.md
274
+ [🪇conduct-img]: https://img.shields.io/badge/Contributor_Covenant-2.1-259D6C.svg
275
+ [📌pvc]: http://guides.rubygems.org/patterns/#pessimistic-version-constraint
276
+ [📌semver]: https://semver.org/spec/v2.0.0.html
277
+ [📌semver-img]: https://img.shields.io/badge/semver-2.0.0-259D6C.svg?style=flat
278
+ [📌semver-breaking]: https://github.com/semver/semver/issues/716#issuecomment-869336139
279
+ [📌major-versions-not-sacred]: https://tom.preston-werner.com/2022/05/23/major-version-numbers-are-not-sacred.html
280
+ [📌changelog]: https://github.com/structuredmerge/structuredmerge-ruby/blob/main/CHANGELOG.md
281
+ [📗keep-changelog]: https://keepachangelog.com/en/1.0.0/
282
+ [📗keep-changelog-img]: https://img.shields.io/badge/keep--a--changelog-1.0.0-34495e.svg?style=flat
283
+ [📌gitmoji]: https://gitmoji.dev
284
+ [📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
285
+ [🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
286
+ [🧮kloc-img]: https://img.shields.io/badge/KLOC-0.084-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
287
+ [🔐security]: https://github.com/structuredmerge/structuredmerge-ruby/blob/main/SECURITY.md
288
+ [🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
289
+ [📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
290
+ [📄license]: LICENSE.md
291
+ [📄license-ref]: LICENSE.md
292
+ [📄license-img]: https://img.shields.io/badge/License-AGPL--3.0--only_OR_PolyForm--Small--Business--1.0.0-259D6C.svg
293
+ [📄license-compat]: https://www.apache.org/legal/resolved.html#category-x
294
+ [📄license-compat-img]: https://img.shields.io/badge/Apache_Incompatible:_Category_X-%E2%9C%97-C0392B.svg?style=flat&logo=Apache
295
+ [📄ilo-declaration]: https://www.ilo.org/declaration/lang--en/index.htm
296
+ [📄ilo-declaration-img]: https://img.shields.io/badge/ILO_Fundamental_Principles-✓-259D6C.svg?style=flat
297
+ [🚎yard-current]: http://rubydoc.info/gems/ast-crispr-ruby-prism
298
+ [🚎yard-head]: https://ast-crispr-ruby-prism.galtzo.com
299
+ [💎stone_checksums]: https://github.com/galtzo-floss/stone_checksums
300
+ [💎SHA_checksums]: https://gitlab.com/structuredmerge/structuredmerge-ruby/-/tree/main/checksums
301
+ [💎rlts]: https://github.com/rubocop-lts/rubocop-lts
302
+ [💎rlts-img]: https://img.shields.io/badge/code_style_&_linting-rubocop--lts-34495e.svg?plastic&logo=ruby&logoColor=white
303
+ [💎appraisal2]: https://github.com/appraisal-rb/appraisal2
304
+ [💎appraisal2-img]: https://img.shields.io/badge/appraised_by-appraisal2-34495e.svg?plastic&logo=ruby&logoColor=white
305
+ [💎d-in-dvcs]: https://railsbling.com/posts/dvcs/put_the_d_in_dvcs/
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Ast
4
+ module Crispr
5
+ module Ruby
6
+ module Prism
7
+ # Version namespace for this gem.
8
+ module Version
9
+ # Current gem version.
10
+ VERSION = '7.1.1'
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,206 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'ast/crispr'
4
+ require 'prism/merge'
5
+ require_relative 'prism/version'
6
+
7
+ module Ast
8
+ module Crispr
9
+ module Ruby
10
+ module Prism
11
+ class Error < StandardError; end
12
+
13
+ module Utils
14
+ module_function
15
+
16
+ def parse_analysis(source, source_label: nil)
17
+ ::Prism::Merge::FileAnalysis.new(source, source_label: source_label)
18
+ end
19
+
20
+ def parse_with_comments(source)
21
+ parse_analysis(source).parse_result
22
+ end
23
+ end
24
+
25
+ class Adapter
26
+ def read_ast(document)
27
+ analysis = Utils.parse_analysis(document.content, source_label: document.source_label)
28
+ return analysis if analysis.valid?
29
+
30
+ raise Ast::Crispr::Error.new("Unable to read structural owners from #{document.source_label}",
31
+ details: { source_label: document.source_label })
32
+ end
33
+
34
+ def structural_owners(document, owner_scope: :shared_default)
35
+ analysis = document.ast
36
+ case owner_scope
37
+ when :shared_default, :line_bound_statements, :top_level_statements
38
+ analysis.statements
39
+ when :ruby_comments
40
+ analysis.parse_result.comments
41
+ else
42
+ raise Ast::Crispr::Error.new('Unsupported CRISPR owner scope', details: { owner_scope: owner_scope })
43
+ end
44
+ end
45
+
46
+ def comment_regions_for(document, owner, region: :leading, owner_scope: :shared_default)
47
+ analysis = document.ast
48
+ owners = structural_owners(document, owner_scope: owner_scope)
49
+
50
+ case region
51
+ when :leading
52
+ analysis.leading_comments_for_owner(owner, owners: owners)
53
+ else
54
+ raise Ast::Crispr::Error.new('Unsupported CRISPR comment region', details: { region: region })
55
+ end
56
+ end
57
+
58
+ def comment_region_text(document, comment_region)
59
+ document.location_slice(comment_region.location).rstrip
60
+ end
61
+
62
+ def structure_profile(owner_scope: :shared_default)
63
+ case owner_scope
64
+ when :shared_default, :line_bound_statements, :top_level_statements
65
+ Ast::Crispr::StructureProfile.new(
66
+ owner_scope: owner_scope,
67
+ owner_selector: :line_bound_statements,
68
+ supported_comment_regions: [:leading],
69
+ metadata: { adapter: :prism }
70
+ )
71
+ when :ruby_comments
72
+ Ast::Crispr::StructureProfile.new(
73
+ owner_scope: owner_scope,
74
+ owner_selector: :line_bound_statements,
75
+ supported_comment_regions: [],
76
+ metadata: { adapter: :prism, selector: :ruby_comments }
77
+ )
78
+ else
79
+ raise Ast::Crispr::Error.new('Unsupported CRISPR owner scope', details: { owner_scope: owner_scope })
80
+ end
81
+ end
82
+ end
83
+
84
+ module Selectors
85
+ module_function
86
+
87
+ def owner_filter(id:, limit: nil, owner_scope: :shared_default, include_trailing_gap: false, metadata: {},
88
+ &block)
89
+ Ast::Crispr::Selectors.owner_filter(
90
+ id: id,
91
+ limit: limit,
92
+ owner_scope: owner_scope,
93
+ include_trailing_gap: include_trailing_gap,
94
+ adapter: Ast::Crispr::Ruby::Prism.adapter,
95
+ metadata: metadata,
96
+ &block
97
+ )
98
+ end
99
+
100
+ def comment_region_owned_owner(marker:, id: nil, limit: nil, owner_scope: :shared_default,
101
+ comment_region: :leading, include_trailing_gap: true, metadata: {}, **options)
102
+ Ast::Crispr::Selectors.comment_region_owned_owner(
103
+ marker: marker,
104
+ id: id,
105
+ limit: limit,
106
+ owner_scope: owner_scope,
107
+ comment_region: comment_region,
108
+ include_trailing_gap: include_trailing_gap,
109
+ adapter: Ast::Crispr::Ruby::Prism.adapter,
110
+ metadata: metadata,
111
+ **options
112
+ )
113
+ end
114
+
115
+ def comment_line_block(start_text:, end_text:, id: nil, limit: nil, span: :nearest,
116
+ include_trailing_gap: false, metadata: {}, **options)
117
+ Ast::Crispr::OwnerSelector.new(
118
+ id: id || "ruby_comment_line_block_#{start_text}",
119
+ limit: limit,
120
+ metadata: metadata.merge(
121
+ adapter: Ast::Crispr::Ruby::Prism.adapter,
122
+ owner_scope: :ruby_comments,
123
+ selector_kind: :ruby_comment_line_block,
124
+ selection_intent: :line_marker_block,
125
+ include_trailing_gap: include_trailing_gap
126
+ ).merge(options),
127
+ locate: lambda do |context|
128
+ comments = context.structural_owners(owner_scope: :ruby_comments)
129
+ if span.to_sym == :outermost
130
+ opening = comments.find do |comment|
131
+ context.location_slice(comment.location).rstrip == start_text.to_s
132
+ end
133
+ closing = comments.reverse.find do |comment|
134
+ opening &&
135
+ context.location_slice(comment.location).rstrip == end_text.to_s &&
136
+ comment.location.end_line >= opening.location.start_line
137
+ end
138
+ next [] unless opening && closing
139
+
140
+ end_line = closing.location.end_line
141
+ end_line = context.expand_following_gap(end_line) if include_trailing_gap
142
+ next [
143
+ Ast::Crispr::Match.new(
144
+ node: opening,
145
+ start_line: opening.location.start_line,
146
+ end_line: end_line,
147
+ metadata: {
148
+ start_boundary: :comment_region_start,
149
+ end_boundary: (include_trailing_gap ? :owner_end_plus_trailing_gap : :owner_end),
150
+ payload_kind: :comment_owned_body,
151
+ start_text: start_text,
152
+ end_text: end_text
153
+ }
154
+ )
155
+ ]
156
+ end
157
+
158
+ comments.each_with_index.filter_map do |comment, index|
159
+ next unless context.location_slice(comment.location).rstrip == start_text.to_s
160
+
161
+ closing = comments[index + 1..]&.find do |candidate|
162
+ context.location_slice(candidate.location).rstrip == end_text.to_s
163
+ end
164
+ next unless closing
165
+
166
+ end_line = closing.location.end_line
167
+ end_line = context.expand_following_gap(end_line) if include_trailing_gap
168
+ Ast::Crispr::Match.new(
169
+ node: comment,
170
+ start_line: comment.location.start_line,
171
+ end_line: end_line,
172
+ metadata: {
173
+ start_boundary: :comment_region_start,
174
+ end_boundary: (include_trailing_gap ? :owner_end_plus_trailing_gap : :owner_end),
175
+ payload_kind: :comment_owned_body,
176
+ start_text: start_text,
177
+ end_text: end_text
178
+ }
179
+ )
180
+ end
181
+ end
182
+ )
183
+ end
184
+ end
185
+
186
+ Targets = Selectors
187
+
188
+ class << self
189
+ def adapter
190
+ @adapter ||= Adapter.new
191
+ end
192
+
193
+ def document_context(content:, source_label: 'source', metadata: {}, **options)
194
+ Ast::Crispr::DocumentContext.new(
195
+ content: content,
196
+ source_label: source_label,
197
+ adapter: adapter,
198
+ metadata: metadata,
199
+ **options
200
+ )
201
+ end
202
+ end
203
+ end
204
+ end
205
+ end
206
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'ast/crispr/ruby/prism'
4
+ require 'version_gem'
5
+ require_relative 'ast/crispr/ruby/prism/version'
6
+
7
+ Ast::Crispr::Ruby::Prism::Version.class_eval do
8
+ extend VersionGem::Basic
9
+ end
@@ -0,0 +1,12 @@
1
+ module Ast
2
+ module Crispr
3
+ module Ruby
4
+ module Prism
5
+ module Version
6
+ VERSION: String
7
+ end
8
+ VERSION: String
9
+ end
10
+ end
11
+ end
12
+ end
data.tar.gz.sig ADDED
@@ -0,0 +1,5 @@
1
+ �l I�����N��(SSZ�����:
2
+ �e��8�]W��E�j7�n������]��*A}|�x�@�;$GoΩ��B�����~��ڴ]]m�ׇ�]H�u�PF㻵��K�V �`��g��3��hWZ:�rP�@��e=� �OZ�uƒ��B4]�����o�j.(��\?����C����6ih�y>�2�S�6���G�l�@�o���4�D a� �A�{��qq��]P�uӪ������5� `���Cw�ug�������3�!�j�-%�ZP���7
3
+ l5`�5X��.W�Fij {x�C��!@W�1
4
+ ���(�
5
+ ~Oȑ������H!y�Ƹ�-'��P����URHH��P������cQ�%�<�
metadata ADDED
@@ -0,0 +1,346 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ast-crispr-ruby-prism
3
+ version: !ruby/object:Gem::Version
4
+ version: 7.1.1
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: ast-crispr
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - '='
45
+ - !ruby/object:Gem::Version
46
+ version: 7.1.1
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - '='
52
+ - !ruby/object:Gem::Version
53
+ version: 7.1.1
54
+ - !ruby/object:Gem::Dependency
55
+ name: prism-merge
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - '='
59
+ - !ruby/object:Gem::Version
60
+ version: 7.1.1
61
+ type: :runtime
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - '='
66
+ - !ruby/object:Gem::Version
67
+ version: 7.1.1
68
+ - !ruby/object:Gem::Dependency
69
+ name: version_gem
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '1.1'
75
+ - - ">="
76
+ - !ruby/object:Gem::Version
77
+ version: 1.1.15
78
+ type: :runtime
79
+ prerelease: false
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - "~>"
83
+ - !ruby/object:Gem::Version
84
+ version: '1.1'
85
+ - - ">="
86
+ - !ruby/object:Gem::Version
87
+ version: 1.1.15
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: '2.5'
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: 2.5.17
98
+ type: :development
99
+ prerelease: false
100
+ version_requirements: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - "~>"
103
+ - !ruby/object:Gem::Version
104
+ version: '2.5'
105
+ - - ">="
106
+ - !ruby/object:Gem::Version
107
+ version: 2.5.17
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.0
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.0
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.19
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.19
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.4
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.4
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.8
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.8
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.11
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.11
290
+ description: "\U0001F9EC Ruby/Prism structural owner selectors and edit helpers for
291
+ ast-crispr."
292
+ email:
293
+ - floss@galtzo.com
294
+ executables: []
295
+ extensions: []
296
+ extra_rdoc_files: []
297
+ files:
298
+ - LICENSE.md
299
+ - README.md
300
+ - lib/ast-crispr-ruby-prism.rb
301
+ - lib/ast/crispr/ruby/prism.rb
302
+ - lib/ast/crispr/ruby/prism/version.rb
303
+ - sig/ast/crispr/ruby/prism.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.1
311
+ changelog_uri: https://github.com/structuredmerge/structuredmerge-ruby/blob/v7.1.1/CHANGELOG.md
312
+ bug_tracker_uri: https://github.com/structuredmerge/structuredmerge-ruby/issues
313
+ documentation_uri: https://www.rubydoc.info/gems/ast-crispr-ruby-prism/7.1.1
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-ruby-prism
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-ruby-prism - \U0001F9EC Prism 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.17
344
+ specification_version: 4
345
+ summary: "\U0001F9EC Prism adapter for AST CRISPR structural edits"
346
+ test_files: []
metadata.gz.sig ADDED
Binary file