Class: Checkoff::Internal::SearchUrl::ResultsMerger

Inherits:
Object
  • Object
show all
Defined in:
lib/checkoff/internal/search_url/results_merger.rb

Overview

Merge task selectors and search API arguments

Class Method Summary collapse

Class Method Details

.merge_args(*args) ⇒ Hash{String => String}

Parameters:

  • args (Array<Hash{String => String}>)

Returns:

  • (Hash{String => String})


11
12
13
14
15
16
17
# File 'lib/checkoff/internal/search_url/results_merger.rb', line 11

def self.merge_args(*args)
  # first element of args
  f = args.fetch(0)
  # rest of args
  r = args.drop(0)
  f.merge(*r)
end

.merge_task_selectors(*task_selectors) ⇒ Array(Symbol, Array, Array)

Parameters:

  • task_selectors (Array<Symbol, Array>)

Returns:

  • (Array(Symbol, Array, Array))


21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/checkoff/internal/search_url/results_merger.rb', line 21

def self.merge_task_selectors(*task_selectors)
  return [] if task_selectors.empty?

  first_task_selector = task_selectors.fetch(0)

  return merge_task_selectors(*task_selectors.drop(1)) if first_task_selector.empty?

  return first_task_selector if task_selectors.length == 1

  rest_task_selectors = merge_task_selectors(*task_selectors.drop(1))

  return first_task_selector if rest_task_selectors.empty?

  [:and, first_task_selector, rest_task_selectors]
end