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>

Returns Hash<String, String>.

Parameters:

  • args (Array<[Hash<String, String>]>)

Returns:

  • (Hash<String, String>)

    Hash<String, String>



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

def self.merge_args(*args)
  # first element of args
  # @sg-ignore
  # @type [Hash<String, String>]
  f = args.fetch(0)
  # rest of args
  r = args.drop(0)
  f.merge(*r)
end

.merge_task_selectors(*task_selectors) ⇒ Array<[Symbol, Array]>

Parameters:

  • task_selectors (Array<Array<[Symbol, Array]>>)

Returns:

  • (Array<[Symbol, Array]>)


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

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