akainaa 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Akainaa
4
- VERSION = "0.1.0"
4
+ VERSION = "0.1.1"
5
5
  end
data/lib/akainaa.rb CHANGED
@@ -54,7 +54,7 @@ module Akainaa
54
54
 
55
55
  private def extract_path_from_query(env)
56
56
  matched = env['QUERY_STRING'].match(/path=([^&]+)/)
57
- matched ? matched[1] : 'app.rb'
57
+ matched ? matched[1] : nil
58
58
  end
59
59
 
60
60
  private def render_line(lineno, code, count, count_top)
@@ -74,13 +74,10 @@ module Akainaa
74
74
  HTML
75
75
  end
76
76
 
77
- private def render_filelist(coverage_result, current_path:)
77
+ private def render_filelist(coverage_result, summary:, current_path:)
78
78
  files = coverage_result.keys
79
- max_count_on_proj = coverage_result
80
- .values
81
- .map { |cv| cv[:lines].reject(&:nil?).sum }
82
- .max + 1
83
- max_count_witdh = max_count_on_proj.to_s.size
79
+ max_count_on_proj = summary.max_count_on_proj
80
+ max_count_width = max_count_on_proj.to_s.size
84
81
 
85
82
  li_elements = files.sort.map do |file|
86
83
  total_count_on_file = coverage_result[file][:lines].reject(&:nil?).sum
@@ -89,7 +86,7 @@ module Akainaa
89
86
  class_suffix = file == current_path ? ' current' : ''
90
87
  <<~HTML
91
88
  <li class="pure-menu-item">
92
- <a href="/akainaa?path=#{file}" class="pure-menu-link filepath#{class_suffix} count-p#{count_top}"">(#{total_count_on_file.to_s.rjust(max_count_witdh)}) #{file}</a>
89
+ <a href="/akainaa?path=#{file}" class="pure-menu-link filepath#{class_suffix} count-p#{count_top}"">(#{total_count_on_file.to_s.rjust(max_count_width)}) #{file}</a>
93
90
  </li>
94
91
  HTML
95
92
  end.join
@@ -110,9 +107,25 @@ module Akainaa
110
107
  HTML
111
108
  end
112
109
 
110
+ CoverageSummary = Data.define(:file_path_has_max_count, :max_count_on_proj)
111
+
112
+ private def generate_summary(coverage_result)
113
+ file_path_has_max_count = coverage_result.max_by { |_, cv| cv[:lines].reject(&:nil?).sum }.first
114
+ max_count_on_proj = coverage_result
115
+ .values
116
+ .map { |cv| cv[:lines].reject(&:nil?).sum }
117
+ .max + 1
118
+
119
+ CoverageSummary.new(file_path_has_max_count:, max_count_on_proj:)
120
+ end
121
+
113
122
  private def render_page(path)
114
123
  result = Akainaa.peek_result
115
124
 
125
+ summary = generate_summary(result)
126
+
127
+ path = summary.file_path_has_max_count if path.nil?
128
+
116
129
  path_result = result[path]
117
130
 
118
131
  if path_result.nil?
@@ -135,7 +148,7 @@ module Akainaa
135
148
  lines << line
136
149
  end
137
150
 
138
- filelist = render_filelist(result, current_path: path)
151
+ filelist = render_filelist(result, summary:, current_path: path)
139
152
 
140
153
  <<~HTML
141
154
  <!DOCTYPE html>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: akainaa
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shia
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-03-14 00:00:00.000000000 Z
11
+ date: 2024-04-28 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Minimum rack middleware for coverage
14
14
  email:
@@ -22,6 +22,7 @@ files:
22
22
  - README.md
23
23
  - Rakefile
24
24
  - akainaa.gemspec
25
+ - docs/isucon13-baseline.html
25
26
  - img/webui.png
26
27
  - lib/akainaa.rb
27
28
  - lib/akainaa/version.rb