123456789_123456789_123456789_123456789_123456789_

Class: ActiveSupport::ArrayInquirer

Relationships & Source Files
Super Chains via Extension / Inclusion / Inheritance
Class Chain:
self, ::Array
Instance Chain:
self, ::Array
Inherits: Array
Defined in: activesupport/lib/active_support/array_inquirer.rb

Overview

Array Inquirer

Wrapping an array in an ArrayInquirer gives a friendlier way to check its string-like contents:

variants = ActiveSupport::ArrayInquirer.new([:phone, :tablet])

variants.phone?    # => true
variants.tablet?   # => true
variants.desktop?  # => false

Class Method Summary

::Array - Inherited

.wrap

Wraps its argument in an array unless it is already an array (or array-like).

Instance Attribute Summary

::Array - Inherited

Instance Method Summary

::Array - Inherited

#blank?

An array is blank if it’s empty:

#deep_dup

Returns a deep copy of array.

#excluding

Returns a copy of the ::Array excluding the specified elements.

#extract!

Removes and returns the elements for which the block returns a true value.

#extract_options!

Extracts options from a set of arguments.

#fifth

Equal to self[4].

#forty_two

Equal to self[41].

#fourth

Equal to self[3].

#from

Returns the tail of the array from position.

#in_groups

Splits or iterates over the array in number of groups, padding any remaining slots with fill_with unless it is false.

#in_groups_of

Splits or iterates over the array in groups of size number, padding any remaining slots with fill_with unless it is false.

#including

Returns a new array that includes the passed elements.

#inquiry

Wraps the array in an ArrayInquirer object, which gives a friendlier way to check its string-like contents.

#second

Equal to self[1].

#second_to_last

Equal to self[-2].

#split

Divides the array into one or more subarrays based on a delimiting value or the result of an optional block.

#third

Equal to self[2].

#third_to_last

Equal to self[-3].

#to

Returns the beginning of the array up to position.

#to_formatted_s

Alias for Array#to_fs.

#to_fs

Extends Array#to_s to convert a collection of elements into a comma separated id list if :db argument is given as the format.

#to_param

Calls to_param on all its elements and joins the result with slashes.

#to_query

Converts an array into a string suitable for use as a URL query string, using the given key as the param name.

#to_sentence

Converts the array to a comma-separated sentence where the last element is joined by the connector word.

#to_xml

Returns a string that represents the array in XML by invoking to_xml on each element.

#without

Alias for Array#excluding.

#as_json,
#compact_blank!

Removes all blank elements from the ::Array in place and returns self.

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name) (private)

[ GitHub ]

  
# File 'activesupport/lib/active_support/array_inquirer.rb', line 42

def method_missing(name, ...)
  if name.end_with?("?")
    any?(name[0..-2])
  else
    super
  end
end

Instance Method Details

#any?(*candidates) ⇒ Boolean

Passes each element of candidates collection to ArrayInquirer collection. The method returns true if any element from the ArrayInquirer collection is equal to the stringified or symbolized form of any element in the candidates collection.

If candidates collection is not given, method returns true.

variants = ActiveSupport::ArrayInquirer.new([:phone, :tablet])

variants.any?                      # => true
variants.any?(:phone, :tablet)     # => true
variants.any?('phone', 'desktop')  # => true
variants.any?(:desktop, :watch)    # => false
[ GitHub ]

  
# File 'activesupport/lib/active_support/array_inquirer.rb', line 27

def any?(*candidates)
  if candidates.none?
    super
  else
    candidates.any? do |candidate|
      include?(candidate.to_sym) || include?(candidate.to_s)
    end
  end
end

#respond_to_missing?(name, include_private = false) ⇒ Boolean (private)

[ GitHub ]

  
# File 'activesupport/lib/active_support/array_inquirer.rb', line 38

def respond_to_missing?(name, include_private = false)
  name.end_with?("?") || super
end