class Array

Public Instance Methods

deep_dup() click to toggle source

Duplicates an Array with all nested values

@return [Hash] a new Hash

# File lib/mimi/core/core_ext.rb, line 296
def deep_dup
  map do |v|
    v.respond_to?(:deep_dup) ? v.deep_dup : v.dup
  end
end
except(*keys) click to toggle source

Returns an Array with given values excluded, if present

@param *values [*] list of values @return [Array] a new Array

@example

a = [:a, :b, :c]
a.except(:a, :b, :d) # => [:c]
# File lib/mimi/core/core_ext.rb, line 266
def except(*keys)
  dup.except!(*keys)
end
except!(*keys) click to toggle source

Modifies the Array excluding given values, if present

@param *values [*] list of values @return [Array] self

@example

a = [:a, :b, :c]
a.except!(:a, :b, :d)
a # => [:c]
# File lib/mimi/core/core_ext.rb, line 280
def except!(*keys)
  if keys.size == 1 && keys.first.is_a?(Array)
    raise ArgumentError, 'Array#except!() expects keys as list of arguments,' \
      ' not an Array as first argument'
  end
  reject! { |k| keys.include?(k) }
  self
end
only(*values) click to toggle source

Returns an Array with only selected values, if present

@param *values [*] list of values @return [Array] a new Array

@example

a = [:a, :b, :c]
a.only(:a, :b, :d) # => [:a, :b]
# File lib/mimi/core/core_ext.rb, line 231
def only(*values)
  dup.only!(*values)
end
only!(*values) click to toggle source

Modifies the Array keeping only given values, if present

@param *values [*] list of values @return [Array] self

@example

a = [:a, :b, :c]
a.only!(:a, :b, :d)
a # => [:a, :b]
# File lib/mimi/core/core_ext.rb, line 245
def only!(*values)
  if values.size == 1 && values.first.is_a?(Array)
    raise ArgumentError, 'Array#only!() expects values as list of arguments,' \
      ' not an Array as first argument'
  end
  select! { |k| values.include?(k) }
  self
end