[Ruby] Delegate difference, intersection, union from RepeatedField to Array (#15652)

Coming from [[protobuf/issues/15180] [Ruby] Support for currently ignored Array methods in `RepeatedField`](https://github.com/protocolbuffers/protobuf/issues/15180)

This adds a couple of `Array` methods to what gets delegated from `RepeatedField`.

- `intersection`, because `|` was already delegated
- `union`, because `&` was already delegated
- `difference`, because `-` was already delegated

Closes #15652

COPYBARA_INTEGRATE_REVIEW=https://github.com/protocolbuffers/protobuf/pull/15652 from marianosimone:delegate_rb_array_methods 2971981338
PiperOrigin-RevId: 604534655
pull/15724/head
Mariano Simone 10 months ago committed by Copybara-Service
parent c98bdc2bdc
commit 11eab86cc0
  1. 6
      ruby/lib/google/protobuf/repeated_field.rb
  2. 4
      ruby/tests/repeated_field_test.rb

@ -47,12 +47,12 @@ module Google
def_delegators :to_ary, def_delegators :to_ary,
:&, :*, :-, :'<=>', :&, :*, :-, :'<=>',
:assoc, :bsearch, :bsearch_index, :combination, :compact, :count, :assoc, :bsearch, :bsearch_index, :combination, :compact, :count,
:cycle, :dig, :drop, :drop_while, :eql?, :fetch, :find_index, :flatten, :cycle, :difference, :dig, :drop, :drop_while, :eql?, :fetch, :find_index, :flatten,
:include?, :index, :inspect, :join, :include?, :index, :inspect, :intersection, :join,
:pack, :permutation, :product, :pretty_print, :pretty_print_cycle, :pack, :permutation, :product, :pretty_print, :pretty_print_cycle,
:rassoc, :repeated_combination, :repeated_permutation, :reverse, :rassoc, :repeated_combination, :repeated_permutation, :reverse,
:rindex, :rotate, :sample, :shuffle, :shelljoin, :rindex, :rotate, :sample, :shuffle, :shelljoin,
:to_s, :transpose, :uniq, :| :to_s, :transpose, :union, :uniq, :|
def first(n=nil) def first(n=nil)

@ -22,9 +22,9 @@ class RepeatedFieldTest < Test::Unit::TestCase
arr_methods -= [ :indices, :iter_for_each, :iter_for_each_index, arr_methods -= [ :indices, :iter_for_each, :iter_for_each_index,
:iter_for_each_with_index, :dimensions, :copy_data, :copy_data_simple, :iter_for_each_with_index, :dimensions, :copy_data, :copy_data_simple,
:nitems, :iter_for_reverse_each, :indexes, :append, :prepend] :nitems, :iter_for_reverse_each, :indexes, :append, :prepend]
arr_methods -= [:union, :difference, :filter!] arr_methods -= [:filter!]
# ruby 2.7 methods we can ignore # ruby 2.7 methods we can ignore
arr_methods -= [:intersection, :deconstruct, :resolve_feature_path] arr_methods -= [:deconstruct, :resolve_feature_path]
# ruby 3.1 methods we can ignore # ruby 3.1 methods we can ignore
arr_methods -= [:intersect?] arr_methods -= [:intersect?]
arr_methods.each do |method_name| arr_methods.each do |method_name|

Loading…
Cancel
Save