Class: ObjectSelector::Provider::FirstNeedleFoundInSortedHaystack

Inherits:
Object
  • Object
show all
Defined in:
lib/object_selector/provider/first_needle_found_in_sorted_haystack.rb

Instance Method Summary collapse

Constructor Details

#initialize(rules:) ⇒ FirstNeedleFoundInSortedHaystack

Returns a new instance of FirstNeedleFoundInSortedHaystack.

Parameters:

  • rules (Array<Hash>)

Options Hash (rules:):

  • :needle (String, Number)
  • :object (Object)

Raises:

  • (ArgumentError)


12
13
14
15
# File 'lib/object_selector/provider/first_needle_found_in_sorted_haystack.rb', line 12

def initialize(rules:)
  raise ArgumentError, 'Rules should be an array' if not rules.is_a?(Array)
  @rules = rules
end

Instance Method Details

#select(haystack) ⇒ Object

Returns selected object key in rules

Parameters:

  • haystack (Array<String>)

Returns:

  • (Object)

    returns selected object key in rules

Raises:



22
23
24
25
26
27
28
# File 'lib/object_selector/provider/first_needle_found_in_sorted_haystack.rb', line 22

def select(haystack)
  object = @rules.map { |rule| 
    break rule[:object] if haystack.sort.include?(rule[:needle])
  } 
  raise ObjectSelector::Error::NoMatchError, 'No rules matched' if object.is_a?(Array) and object.all? &:nil?
  return object
end