Class: ActiveSupport::ArrayInquirer
- Defined in:
- 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
Instance Method Summary collapse
-
#any?(*candidates) ⇒ Boolean
Passes each element of
candidates
collection to ArrayInquirer collection.
Methods inherited from Array
#as_json, #compact_blank!, #deep_dup, #excluding, #extract!, #extract_options!, #fifth, #forty_two, #fourth, #from, #in_groups, #in_groups_of, #including, #inquiry, #present?, #second, #second_to_last, #split, #third, #third_to_last, #to, #to_fs, #to_param, #to_query, #to_sentence, #to_xml, wrap
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(name) ⇒ Object (private)
42 43 44 45 46 47 48 |
# File '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
27 28 29 30 31 32 33 34 35 |
# File '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 |