prism-merge 7.1.3 → 7.1.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 05162706e7a7aad556baf0781fb12f4b357235ecd8cfb7c97d4e78f3f09d5a15
4
- data.tar.gz: e4599c75cf98de86668c0029d87e5556bbeaf42ee099bd466effc8a1949f261d
3
+ metadata.gz: 7d32fbdcd833e576a54414849501db40ddacd349498c05e4d233159f2e5521c1
4
+ data.tar.gz: 063f4adb55b355f984f09eb376652dded9e8a8d2451d993ebc4a954eb403ca0c
5
5
  SHA512:
6
- metadata.gz: 302024d190da6a5d406bdd7107c7fd7b0ba566852d1043a58738cba02eb09b2a0501ceaa4c9a993ed076601919f49939f2bc93b103e66bfb98fde42bfb62e35a
7
- data.tar.gz: 8f58d15fcd6dafb0392b5279fbd8fde3de0dc91f2a83ffd67cc827e4370c72d0cb402436bfd9e260c294f3b28e3e28470737ac1eba38eaae7e2a80241b57efc3
6
+ metadata.gz: 291ed360148759fb7f32d3c28da2d0c8da02733022b60b9ada62781cd0cfc61d0295164e43f84985816d2416f92f433862e04010ec2ac59c200f953918e8c540
7
+ data.tar.gz: 75c2f6a59e5910332a80945f0f12426d5a019872d4e128834cebabfc496db6c30d2ab389940a7bc10910a084694bf68d59e9bcd81281dbbc173857d86b6a59a5
checksums.yaml.gz.sig CHANGED
Binary file
data/README.md CHANGED
@@ -1244,7 +1244,7 @@ If none of the available licenses suit your use case, please [contact us](mailto
1244
1244
  [📌gitmoji]: https://gitmoji.dev
1245
1245
  [📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
1246
1246
  [🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
1247
- [🧮kloc-img]: https://img.shields.io/badge/KLOC-4.246-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
1247
+ [🧮kloc-img]: https://img.shields.io/badge/KLOC-4.550-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
1248
1248
  [🔐security]: https://github.com/structuredmerge/structuredmerge-ruby/blob/main/SECURITY.md
1249
1249
  [🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
1250
1250
  [📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
@@ -5,7 +5,7 @@ module Prism
5
5
  # Version namespace for this gem.
6
6
  module Version
7
7
  # Current gem version.
8
- VERSION = '7.1.3'
8
+ VERSION = '7.1.4'
9
9
  end
10
10
  # Current gem version exposed at the traditional constant location.
11
11
  VERSION = Version::VERSION # Traditional Constant Location
data/lib/prism/merge.rb CHANGED
@@ -1,27 +1,19 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'prism'
4
+ require 'ruby-merge'
4
5
  require 'ast/merge'
5
6
  require 'tree_haver'
6
- require_relative '../ruby/merge/block_directive_detector'
7
- require_relative '../ruby/merge/block_binding_support'
8
- require_relative '../ruby/merge/doc_comment_support'
9
- require_relative '../ruby/merge/gemspec_support'
10
- require_relative '../ruby/merge/magic_comment_support'
11
- require_relative '../ruby/merge/method_similarity'
12
- require_relative '../ruby/merge/nocov_node_base'
13
- require_relative '../ruby/merge/nocov_wrapper_base'
14
- require_relative '../ruby/merge/rescue_semantics'
15
- require_relative '../ruby/merge/scaffold_chunk_support'
16
- require_relative '../ruby/merge/signature_support'
17
7
  require_relative 'merge/version'
18
8
 
19
9
  module Prism
10
+ # This public facade keeps provider protocol and backend registration
11
+ # entrypoints together; implementation details live in autoloaded files.
12
+ # rubocop:disable Metrics/ModuleLength
20
13
  module Merge
21
14
  module_function
22
15
 
23
16
  PACKAGE_NAME = 'prism-merge'
24
- DESTINATION_WINS_ARRAY_POLICY = { surface: 'array', name: 'destination_wins_array' }.freeze
25
17
  BACKEND_REFERENCE = TreeHaver::BackendReference.new(id: 'prism', family: 'native').freeze
26
18
  BACKEND_REGISTRY = Struct.new(:registered, :mutex).new(false, Mutex.new)
27
19
  TreeHaver::BackendRegistry.register(BACKEND_REFERENCE)
@@ -99,11 +91,7 @@ module Prism
99
91
  end
100
92
 
101
93
  def ruby_feature_profile
102
- {
103
- family: 'ruby',
104
- supported_dialects: ['ruby'],
105
- supported_policies: [DESTINATION_WINS_ARRAY_POLICY]
106
- }
94
+ Ruby::Merge.ruby_feature_profile
107
95
  end
108
96
 
109
97
  def merge_provider
@@ -324,6 +312,8 @@ module Prism
324
312
  }
325
313
  end
326
314
 
315
+ # This projection mirrors the nested public schema intentionally.
316
+ # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
327
317
  def ruby_structured_edit_batch_report_projection
328
318
  content = "class App\n # managed snippet\n old_call\n\n anchor_call\n\n # obsolete snippet\n obsolete_call\nend\n"
329
319
  {
@@ -465,7 +455,10 @@ module Prism
465
455
  )
466
456
  }
467
457
  end
458
+ # rubocop:enable Metrics/AbcSize, Metrics/MethodLength
468
459
 
460
+ # Keep parser validation and diagnostics in one boundary method.
461
+ # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
469
462
  def parse_ruby(source, dialect, backend: nil)
470
463
  requested = backend.to_s.empty? ? BACKEND_REFERENCE.id : backend.to_s
471
464
  return unsupported_feature_result("Unsupported Ruby dialect #{dialect}.") unless dialect == 'ruby'
@@ -493,6 +486,7 @@ module Prism
493
486
  policies: []
494
487
  }
495
488
  end
489
+ # rubocop:enable Metrics/AbcSize, Metrics/MethodLength
496
490
 
497
491
  def analyze_ruby_document(source, parse_result)
498
492
  normalized_source = prism_ruby_normalize_source(source)
@@ -509,6 +503,8 @@ module Prism
509
503
  }
510
504
  end
511
505
 
506
+ # Normalization builds the complete TreeHaver contract in one pass.
507
+ # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength, Metrics/PerceivedComplexity
512
508
  def parse_ruby_normalized(source, dialect = 'ruby', backend: nil)
513
509
  requested = backend.to_s.empty? ? BACKEND_REFERENCE.id : backend.to_s
514
510
  return unsupported_feature_result("Unsupported Ruby dialect #{dialect}.") unless dialect == 'ruby'
@@ -590,7 +586,10 @@ module Prism
590
586
  metadata: prism_normalized_metadata
591
587
  ).to_h
592
588
  end
589
+ # rubocop:enable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength, Metrics/PerceivedComplexity
593
590
 
591
+ # This adapter validates, edits, reparses, and reports one projection atomically.
592
+ # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength, Metrics/PerceivedComplexity
594
593
  def apply_edit_projection(request)
595
594
  source = request.fetch(:source)
596
595
  provider_id = request.fetch(:provider_id)
@@ -662,9 +661,10 @@ module Prism
662
661
  []
663
662
  ).to_h
664
663
  end
664
+ # rubocop:enable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength, Metrics/PerceivedComplexity
665
665
 
666
666
  def match_ruby_owners(template, destination)
667
- Ast::Merge::OwnerSelection.match_by_path(template, destination)
667
+ Ruby::Merge.match_ruby_owners(template, destination)
668
668
  end
669
669
 
670
670
  def merge_ruby(
@@ -699,7 +699,7 @@ module Prism
699
699
  ok: true,
700
700
  diagnostics: [],
701
701
  output: merger.merge.to_s,
702
- policies: ruby_feature_profile.fetch(:supported_policies)
702
+ policies: Ruby::Merge.ruby_feature_profile.fetch(:supported_policies)
703
703
  }
704
704
  rescue Prism::Merge::ParseError => e
705
705
  {
@@ -745,6 +745,8 @@ module Prism
745
745
  end
746
746
  end
747
747
 
748
+ # Alias normalization intentionally handles the supported input shapes inline.
749
+ # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength
748
750
  def normalize_ruby_require_aliases(require_aliases)
749
751
  Array(require_aliases).each_with_object({}) do |entry, aliases|
750
752
  case entry
@@ -765,6 +767,7 @@ module Prism
765
767
  aliases[to] = canonical
766
768
  end
767
769
  end
770
+ # rubocop:enable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength
768
771
 
769
772
  def ruby_dsl_call_node(node)
770
773
  return node if node.is_a?(::Prism::CallNode)
@@ -789,6 +792,8 @@ module Prism
789
792
  end
790
793
  end
791
794
 
795
+ # The reviewed merge boundary must retain all protocol roles for replay.
796
+ # rubocop:disable Metrics/AbcSize, Metrics/MethodLength, Metrics/ParameterLists
792
797
  def merge_ruby_with_reviewed_nested_outputs(template_source, destination_source, dialect, review_state,
793
798
  applied_children, backend: nil)
794
799
  requested = backend.to_s.empty? ? BACKEND_REFERENCE.id : backend.to_s
@@ -812,7 +817,7 @@ module Prism
812
817
  }
813
818
  },
814
819
  apply_resolved_outputs: lambda { |merged_output, operations, apply_plan, resolved_children|
815
- apply_ruby_delegated_child_outputs(
820
+ Ruby::Merge.apply_ruby_delegated_child_outputs(
816
821
  merged_output,
817
822
  operations,
818
823
  apply_plan,
@@ -821,6 +826,7 @@ module Prism
821
826
  }
822
827
  )
823
828
  end
829
+ # rubocop:enable Metrics/AbcSize, Metrics/MethodLength, Metrics/ParameterLists
824
830
 
825
831
  def merge_ruby_with_reviewed_nested_outputs_from_replay_bundle(template_source, destination_source, dialect,
826
832
  replay_bundle, backend: nil)
@@ -913,83 +919,15 @@ module Prism
913
919
  end
914
920
 
915
921
  def ruby_discovered_surfaces(analysis)
916
- analysis[:discovered_surfaces] || []
922
+ Ruby::Merge.ruby_discovered_surfaces(analysis)
917
923
  end
918
924
 
919
925
  def ruby_delegated_child_operations(analysis, parent_operation_id: 'ruby-document-0')
920
- surfaces = ruby_discovered_surfaces(analysis)
921
- doc_operation_ids = {}
922
- operations = []
923
-
924
- surfaces.each_with_index do |surface, index|
925
- next unless surface[:surface_kind] == 'ruby_doc_comment'
926
-
927
- operation_id = "ruby-doc-comment-#{index}"
928
- doc_operation_ids[surface[:address]] = operation_id
929
- operations << Ast::Merge.delegated_child_operation(
930
- operation_id: operation_id,
931
- parent_operation_id: parent_operation_id,
932
- requested_strategy: 'delegate_child_surface',
933
- language_chain: ['ruby', surface[:effective_language]],
934
- surface: surface
935
- )
936
- end
937
-
938
- example_index = 0
939
- surfaces.each do |surface|
940
- next unless surface[:surface_kind] == 'yard_example_block'
941
-
942
- operations << Ast::Merge.delegated_child_operation(
943
- operation_id: "yard-example-#{example_index}",
944
- parent_operation_id: doc_operation_ids.fetch(surface[:parent_address], parent_operation_id),
945
- requested_strategy: 'delegate_child_surface',
946
- language_chain: ['ruby', 'yard', surface[:effective_language]],
947
- surface: surface
948
- )
949
- example_index += 1
950
- end
951
-
952
- operations
953
- end
954
-
955
- def apply_ruby_delegated_child_outputs(source, delegated_operations, apply_plan, applied_children)
956
- lines = prism_ruby_normalize_source(source).split("\n")
957
- operations_by_id = delegated_operations.to_h { |operation| [operation[:operation_id], operation] }
958
- outputs_by_id = applied_children.to_h { |entry| [entry[:operation_id], entry[:output]] }
959
-
960
- replacements = apply_plan[:entries].filter_map do |entry|
961
- operation = operations_by_id[entry.dig(:delegated_group, :child_operation_id)]
962
- output = outputs_by_id[entry.dig(:delegated_group, :child_operation_id)]
963
- span = operation&.dig(:surface, :span)
964
- next if operation.nil? || output.nil? || span.nil?
965
-
966
- { start: span[:start_line] - 1, finish: span[:end_line] - 1, output: output }
967
- end
968
-
969
- replacements.sort_by { |entry| -entry[:start] }.each do |entry|
970
- prefix = Ruby::Merge::DocCommentSupport.comment_prefix_for(lines[entry[:start]])
971
- replacement_lines = if entry[:output].empty?
972
- []
973
- else
974
- entry[:output].sub(/\n\z/, '').split("\n").map { |line| "#{prefix}#{line}" }
975
- end
976
- lines[entry[:start]..entry[:finish]] = replacement_lines
977
- end
978
-
979
- {
980
- ok: true,
981
- diagnostics: [],
982
- output: "#{lines.join("\n").sub(/\n+\z/, '')}\n",
983
- policies: [DESTINATION_WINS_ARRAY_POLICY]
984
- }
926
+ Ruby::Merge.ruby_delegated_child_operations(analysis, parent_operation_id: parent_operation_id)
985
927
  end
986
928
 
987
929
  def unsupported_feature_result(message)
988
- {
989
- ok: false,
990
- diagnostics: [{ severity: 'error', category: 'unsupported_feature', message: message }],
991
- policies: []
992
- }
930
+ Ruby::Merge.unsupported_feature_result(message)
993
931
  end
994
932
 
995
933
  def prism_ruby_analysis_owners(body)
@@ -1016,6 +954,8 @@ module Prism
1016
954
  end.sort_by { |owner| owner[:path] }
1017
955
  end
1018
956
 
957
+ # Surface discovery intentionally keeps line ownership and comment state together.
958
+ # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
1019
959
  def prism_ruby_discovered_surfaces(source, body)
1020
960
  owners_by_line = body.filter_map do |node|
1021
961
  name = prism_ruby_declaration_name(node)
@@ -1046,7 +986,10 @@ module Prism
1046
986
 
1047
987
  surfaces
1048
988
  end
989
+ # rubocop:enable Metrics/AbcSize, Metrics/MethodLength
1049
990
 
991
+ # A surface record is assembled as one schema-shaped value.
992
+ # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
1050
993
  def prism_ruby_surfaces_for_owner(owner_name, comment_entries)
1051
994
  filtered_entries = comment_entries.filter { |entry| prism_ruby_doc_comment_content?(entry.fetch(:raw)) }
1052
995
  return [] if filtered_entries.empty?
@@ -1071,7 +1014,10 @@ module Prism
1071
1014
 
1072
1015
  [doc_surface] + prism_ruby_example_surfaces(doc_surface)
1073
1016
  end
1017
+ # rubocop:enable Metrics/AbcSize, Metrics/MethodLength
1074
1018
 
1019
+ # Example surfaces preserve the complete delegated-child metadata contract.
1020
+ # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
1075
1021
  def prism_ruby_example_surfaces(surface)
1076
1022
  entries = Array(surface.dig(:metadata, :entries))
1077
1023
  Ruby::Merge::DocCommentSupport.example_blocks(entries).map do |block|
@@ -1096,6 +1042,7 @@ module Prism
1096
1042
  )
1097
1043
  end
1098
1044
  end
1045
+ # rubocop:enable Metrics/AbcSize, Metrics/MethodLength
1099
1046
 
1100
1047
  def prism_ruby_declaration_name(node)
1101
1048
  case node
@@ -1254,6 +1201,8 @@ module Prism
1254
1201
  end
1255
1202
  end
1256
1203
 
1204
+ # Comment nodes retain backend metadata in a single normalized schema value.
1205
+ # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
1257
1206
  def prism_comment_node(source, comment, index, magic_comment, parent_id:)
1258
1207
  directive = prism_comment_directive(
1259
1208
  source.byteslice(comment.location.start_offset...comment.location.end_offset), magic_comment
@@ -1284,6 +1233,7 @@ module Prism
1284
1233
  }
1285
1234
  )
1286
1235
  end
1236
+ # rubocop:enable Metrics/AbcSize, Metrics/MethodLength
1287
1237
 
1288
1238
  def prism_comment_directive(comment_text, magic_comment)
1289
1239
  if comment_text.strip.match?(/\A#\s*smorg:freeze\b/)
@@ -1422,6 +1372,7 @@ module Prism
1422
1372
  :source_span_for_location
1423
1373
  )
1424
1374
  end
1375
+ # rubocop:enable Metrics/ModuleLength
1425
1376
  end
1426
1377
 
1427
1378
  Prism::Merge.register_backend!
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prism-merge
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.1.3
4
+ version: 7.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter H. Boling
@@ -43,14 +43,14 @@ dependencies:
43
43
  requirements:
44
44
  - - '='
45
45
  - !ruby/object:Gem::Version
46
- version: 7.1.3
46
+ version: 7.1.4
47
47
  type: :runtime
48
48
  prerelease: false
49
49
  version_requirements: !ruby/object:Gem::Requirement
50
50
  requirements:
51
51
  - - '='
52
52
  - !ruby/object:Gem::Version
53
- version: 7.1.3
53
+ version: 7.1.4
54
54
  - !ruby/object:Gem::Dependency
55
55
  name: prism
56
56
  requirement: !ruby/object:Gem::Requirement
@@ -65,20 +65,34 @@ dependencies:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
67
  version: '1.6'
68
+ - !ruby/object:Gem::Dependency
69
+ name: ruby-merge
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - '='
73
+ - !ruby/object:Gem::Version
74
+ version: 7.1.4
75
+ type: :runtime
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - '='
80
+ - !ruby/object:Gem::Version
81
+ version: 7.1.4
68
82
  - !ruby/object:Gem::Dependency
69
83
  name: tree_haver
70
84
  requirement: !ruby/object:Gem::Requirement
71
85
  requirements:
72
86
  - - '='
73
87
  - !ruby/object:Gem::Version
74
- version: 7.1.3
88
+ version: 7.1.4
75
89
  type: :runtime
76
90
  prerelease: false
77
91
  version_requirements: !ruby/object:Gem::Requirement
78
92
  requirements:
79
93
  - - '='
80
94
  - !ruby/object:Gem::Version
81
- version: 7.1.3
95
+ version: 7.1.4
82
96
  - !ruby/object:Gem::Dependency
83
97
  name: version_gem
84
98
  requirement: !ruby/object:Gem::Requirement
@@ -108,7 +122,7 @@ dependencies:
108
122
  version: '3.0'
109
123
  - - ">="
110
124
  - !ruby/object:Gem::Version
111
- version: 3.0.0
125
+ version: 3.0.7
112
126
  type: :development
113
127
  prerelease: false
114
128
  version_requirements: !ruby/object:Gem::Requirement
@@ -118,7 +132,7 @@ dependencies:
118
132
  version: '3.0'
119
133
  - - ">="
120
134
  - !ruby/object:Gem::Version
121
- version: 3.0.0
135
+ version: 3.0.7
122
136
  - !ruby/object:Gem::Dependency
123
137
  name: bundler-audit
124
138
  requirement: !ruby/object:Gem::Requirement
@@ -216,7 +230,7 @@ dependencies:
216
230
  version: '2.0'
217
231
  - - ">="
218
232
  - !ruby/object:Gem::Version
219
- version: 2.0.19
233
+ version: 2.0.20
220
234
  type: :development
221
235
  prerelease: false
222
236
  version_requirements: !ruby/object:Gem::Requirement
@@ -226,7 +240,7 @@ dependencies:
226
240
  version: '2.0'
227
241
  - - ">="
228
242
  - !ruby/object:Gem::Version
229
- version: 2.0.19
243
+ version: 2.0.20
230
244
  - !ruby/object:Gem::Dependency
231
245
  name: turbo_tests2
232
246
  requirement: !ruby/object:Gem::Requirement
@@ -236,7 +250,7 @@ dependencies:
236
250
  version: '3.2'
237
251
  - - ">="
238
252
  - !ruby/object:Gem::Version
239
- version: 3.2.5
253
+ version: 3.2.6
240
254
  type: :development
241
255
  prerelease: false
242
256
  version_requirements: !ruby/object:Gem::Requirement
@@ -246,7 +260,7 @@ dependencies:
246
260
  version: '3.2'
247
261
  - - ">="
248
262
  - !ruby/object:Gem::Version
249
- version: 3.2.5
263
+ version: 3.2.6
250
264
  - !ruby/object:Gem::Dependency
251
265
  name: ruby-progressbar
252
266
  requirement: !ruby/object:Gem::Requirement
@@ -290,7 +304,7 @@ dependencies:
290
304
  version: '2.0'
291
305
  - - ">="
292
306
  - !ruby/object:Gem::Version
293
- version: 2.0.11
307
+ version: 2.0.12
294
308
  type: :development
295
309
  prerelease: false
296
310
  version_requirements: !ruby/object:Gem::Requirement
@@ -300,7 +314,7 @@ dependencies:
300
314
  version: '2.0'
301
315
  - - ">="
302
316
  - !ruby/object:Gem::Version
303
- version: 2.0.11
317
+ version: 2.0.12
304
318
  description: "☯️ Prism-backed Ruby provider gem for the Structured Merge Ruby family."
305
319
  email:
306
320
  - floss@galtzo.com
@@ -354,17 +368,6 @@ files:
354
368
  - lib/prism/merge/top_level_merge_runner.rb
355
369
  - lib/prism/merge/version.rb
356
370
  - lib/prism/merge/wrapper_comment_support.rb
357
- - lib/ruby/merge/block_binding_support.rb
358
- - lib/ruby/merge/block_directive_detector.rb
359
- - lib/ruby/merge/doc_comment_support.rb
360
- - lib/ruby/merge/gemspec_support.rb
361
- - lib/ruby/merge/magic_comment_support.rb
362
- - lib/ruby/merge/method_similarity.rb
363
- - lib/ruby/merge/nocov_node_base.rb
364
- - lib/ruby/merge/nocov_wrapper_base.rb
365
- - lib/ruby/merge/rescue_semantics.rb
366
- - lib/ruby/merge/scaffold_chunk_support.rb
367
- - lib/ruby/merge/signature_support.rb
368
371
  - sig/prism/merge.rbs
369
372
  homepage: https://github.com/structuredmerge/structuredmerge-ruby
370
373
  licenses:
@@ -372,10 +375,10 @@ licenses:
372
375
  - PolyForm-Small-Business-1.0.0
373
376
  metadata:
374
377
  homepage_uri: https://structuredmerge.org
375
- source_code_uri: https://github.com/structuredmerge/structuredmerge-ruby/tree/v7.1.3
376
- changelog_uri: https://github.com/structuredmerge/structuredmerge-ruby/blob/v7.1.3/CHANGELOG.md
378
+ source_code_uri: https://github.com/structuredmerge/structuredmerge-ruby/tree/v7.1.4
379
+ changelog_uri: https://github.com/structuredmerge/structuredmerge-ruby/blob/v7.1.4/CHANGELOG.md
377
380
  bug_tracker_uri: https://github.com/structuredmerge/structuredmerge-ruby/issues
378
- documentation_uri: https://www.rubydoc.info/gems/prism-merge/7.1.3
381
+ documentation_uri: https://www.rubydoc.info/gems/prism-merge/7.1.4
379
382
  funding_uri: https://github.com/sponsors/pboling
380
383
  wiki_uri: https://github.com/structuredmerge/structuredmerge-ruby/wiki
381
384
  news_uri: https://www.railsbling.com/tags/prism-merge
metadata.gz.sig CHANGED
Binary file
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Ruby
4
- module Merge
5
- # Parser-neutral naming policy for a block-local receiver.
6
- module BlockBindingSupport
7
- module_function
8
-
9
- def effective_receiver(receiver, block_var, placeholder: :__block_binding__)
10
- block_var && receiver == block_var ? placeholder : receiver
11
- end
12
-
13
- def preferred_block_var(template_var, destination_var)
14
- template_var if template_var && destination_var && template_var != destination_var
15
- end
16
-
17
- def merged_block_var(var, preferred_var)
18
- preferred_var || var
19
- end
20
- end
21
- end
22
- end