Class: Fitting::Statistics::Template

Inherits:
Object
  • Object
show all
Defined in:
lib/fitting/statistics/template.rb

Instance Method Summary collapse

Constructor Details

#initialize(tested_requests, config, depth = 'valid') ⇒ Template

Returns a new instance of Template.



13
14
15
16
17
# File 'lib/fitting/statistics/template.rb', line 13

def initialize(tested_requests, config, depth = 'valid')
  @tested_requests = tested_requests
  @config = config
  @depth = depth
end

Instance Method Details

#black_measurementObject



59
60
61
62
63
64
65
66
67
68
# File 'lib/fitting/statistics/template.rb', line 59

def black_measurement
  @black_measurement ||=
    if @depth == 'valid'
      Fitting::Statistics::Measurement.new(black_unit)
    elsif @depth == 'cover'
      Fitting::Statistics::MeasurementCover.new(black_unit)
    elsif @depth == 'cover_enum'
      Fitting::Statistics::MeasurementCoverEnum.new(black_unit)
    end
end

#black_statisticsObject



44
45
46
# File 'lib/fitting/statistics/template.rb', line 44

def black_statistics
  @black_statistics ||= Fitting::Statistics::Analysis.new(black_measurement, @depth)
end

#black_unitObject



76
77
78
79
80
# File 'lib/fitting/statistics/template.rb', line 76

def black_unit
  @black_unit_requests ||= documented_requests_black.inject([]) do |res, documented_request|
    res.push(Fitting::Records::Unit::Request.new(documented_request, @tested_requests))
  end
end

#documentedObject



92
93
94
95
96
# File 'lib/fitting/statistics/template.rb', line 92

def documented
  @documented_requests ||= @config.tomogram.to_a.inject([]) do |res, tomogram_request|
    res.push(Fitting::Records::Documented::Request.new(tomogram_request, white_list.to_a))
  end
end

#documented_requests_blackObject



86
87
88
89
90
# File 'lib/fitting/statistics/template.rb', line 86

def documented_requests_black
  @documented_requests_black ||= documented.find_all do |request|
    !request.white
  end
end

#documented_requests_whiteObject



82
83
84
# File 'lib/fitting/statistics/template.rb', line 82

def documented_requests_white
  @documented_requests_white ||= documented.find_all(&:white)
end

#not_coveredObject



36
37
38
# File 'lib/fitting/statistics/template.rb', line 36

def not_covered
  Fitting::Statistics::NotCoveredResponses.new(white_measurement).to_s
end

#saveObject



19
20
21
22
# File 'lib/fitting/statistics/template.rb', line 19

def save
  File.open(@config.stats_path, 'w') { |file| file.write(stats) }
  File.open(@config.not_covered_path, 'w') { |file| file.write(not_covered) }
end

#statsObject



24
25
26
27
28
29
30
31
32
33
34
# File 'lib/fitting/statistics/template.rb', line 24

def stats
  if @config.white_list.present? || @config.resource_white_list.present? || @config.include_resources.present?
    [
      ['[Black list]', black_statistics].join("\n"),
      ['[White list]', white_statistics].join("\n"),
      ''
    ].join("\n\n")
  else
    [white_statistics, "\n\n"].join
  end
end

#white_listObject



98
99
100
101
102
103
104
105
106
107
# File 'lib/fitting/statistics/template.rb', line 98

def white_list
  @white_list ||= Fitting::Storage::WhiteList.new(
    @config.prefix,
    @config.white_list,
    @config.resource_white_list,
    @config.include_resources,
    @config.include_actions,
    @config.tomogram.to_resources
  )
end

#white_measurementObject



48
49
50
51
52
53
54
55
56
57
# File 'lib/fitting/statistics/template.rb', line 48

def white_measurement
  @white_measurement ||=
    if @depth == 'valid'
      Fitting::Statistics::Measurement.new(white_unit)
    elsif @depth == 'cover'
      Fitting::Statistics::MeasurementCover.new(white_unit)
    elsif @depth == 'cover_enum'
      Fitting::Statistics::MeasurementCoverEnum.new(white_unit)
    end
end

#white_statisticsObject



40
41
42
# File 'lib/fitting/statistics/template.rb', line 40

def white_statistics
  @white_statistics ||= Fitting::Statistics::Analysis.new(white_measurement, @depth)
end

#white_unitObject



70
71
72
73
74
# File 'lib/fitting/statistics/template.rb', line 70

def white_unit
  @white_unit_requests ||= documented_requests_white.inject([]) do |res, documented_request|
    res.push(Fitting::Records::Unit::Request.new(documented_request, @tested_requests))
  end
end