diff --git a/lib/core/facets/array.rb b/lib/core/facets/array.rb index f17a8a64..24ffabe5 100644 --- a/lib/core/facets/array.rb +++ b/lib/core/facets/array.rb @@ -32,6 +32,7 @@ #require_relative 'array/op_pow.rb' # uncommon require_relative 'array/recurse.rb' require_relative 'array/recursively.rb' +require_relative 'array/reject_values.rb' require_relative 'array/splice.rb' require_relative 'array/split.rb' require_relative 'array/store.rb' diff --git a/lib/core/facets/array/reject_values.rb b/lib/core/facets/array/reject_values.rb new file mode 100644 index 00000000..d48b116c --- /dev/null +++ b/lib/core/facets/array/reject_values.rb @@ -0,0 +1,21 @@ +class Array + + # Non-destructive form of `Array#delete_values`. Unlike `delete_values` + # this method returns a new array. + # + # values - List of array elements to reject. + # + # Examples + # + # [1,2,3,4,5].reject_values(2,4) # => [1,3,5] + # + # Returns [Array] + # + # CREDIT: Sean Mackesey + + def reject_values(*values) + reject { |x| values.include?(x) } + end + +end + diff --git a/test/core/array/test_reject_values.rb b/test/core/array/test_reject_values.rb new file mode 100644 index 00000000..ed0d6d50 --- /dev/null +++ b/test/core/array/test_reject_values.rb @@ -0,0 +1,17 @@ +covers 'facets/array/reject_values' + +testcase Array do + + method :reject_values do + + test do + a = [1,2,3,4,5] + r = a.reject_values(2,4) + r.assert == [1,3,5] + a.assert = [1,2,3,4,5] # hasn't changed + end + + end + +end +