Class: Fluoride::Analyzer::GroupCollapser

Inherits:
Object
  • Object
show all
Defined in:
lib/fluoride-analyzer/group-collapser.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(pattern, letname_map, method, status, requests_list) ⇒ GroupCollapser

Returns a new instance of GroupCollapser.



5
6
7
8
9
10
# File 'lib/fluoride-analyzer/group-collapser.rb', line 5

def initialize(pattern, letname_map, method, status, requests_list)
  @pattern = pattern
  @letname_map = letname_map
  @request_list = requests_list
  @method, @status = method, status
end

Instance Attribute Details

#letname_mapObject (readonly)

Returns the value of attribute letname_map.



11
12
13
# File 'lib/fluoride-analyzer/group-collapser.rb', line 11

def letname_map
  @letname_map
end

#methodObject (readonly)

Returns the value of attribute method.



11
12
13
# File 'lib/fluoride-analyzer/group-collapser.rb', line 11

def method
  @method
end

#statusObject (readonly)

Returns the value of attribute status.



11
12
13
# File 'lib/fluoride-analyzer/group-collapser.rb', line 11

def status
  @status
end

Instance Method Details

#each_group_contextObject



36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/fluoride-analyzer/group-collapser.rb', line 36

def each_group_context
  path_tuples = requests.map do |request|
    [request['path'], request['query_params'], request]
  end

  reduced_hash = Hash.new{|h,k| h[k] = []}
  path_tuples.each do |path, query, request|
    reduced_hash[ [ reduce_path(path, request), reduce_query(query, request) ] ] << request
  end

  reduced_hash.each do |(path, query_params), requests|
  yield GroupContext.new(method, status, requests, path, query_params)
  end
end

#reduce_path(path, request) ⇒ Object



21
22
23
24
25
26
27
28
29
# File 'lib/fluoride-analyzer/group-collapser.rb', line 21

def reduce_path(path, request)
  path = @pattern.dup
  request['path_params'].each_pair do |name, value|
    next if stet_list.include?(name)
    target_name = letname_map.fetch(name, name)
    path.sub!(/:#{name}/,"\#{#{target_name}}")
  end
  path
end

#reduce_query(query, request) ⇒ Object



31
32
33
34
# File 'lib/fluoride-analyzer/group-collapser.rb', line 31

def reduce_query(query, request)
  ""
  #none captured (yet?)
end

#requestsObject



17
18
19
# File 'lib/fluoride-analyzer/group-collapser.rb', line 17

def requests
  @request_list
end

#stet_listObject



13
14
15
# File 'lib/fluoride-analyzer/group-collapser.rb', line 13

def stet_list
  []
end