Almirah 0.2.2 → 0.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -24,10 +24,7 @@ class DocParser
24
24
  if s.lstrip != ''
25
25
  if res = /^(\#{1,})\s(.*)/.match(s) # Heading
26
26
 
27
- if temp_md_table
28
- doc.items.append temp_md_table
29
- temp_md_table = nil
30
- end
27
+ temp_md_table = process_temp_table(doc, temp_md_table)
31
28
  if temp_md_list
32
29
  doc.items.append temp_md_list
33
30
  temp_md_list = nil
@@ -58,10 +55,7 @@ class DocParser
58
55
 
59
56
  elsif res = /^\[(\S*)\]\s+(.*)/.match(s) # Controlled Paragraph
60
57
 
61
- if temp_md_table
62
- doc.items.append temp_md_table
63
- temp_md_table = nil
64
- end
58
+ temp_md_table = process_temp_table(doc, temp_md_table)
65
59
  if temp_md_list
66
60
  doc.items.append temp_md_list
67
61
  temp_md_list = nil
@@ -137,10 +131,7 @@ class DocParser
137
131
 
138
132
  elsif res = /^!\[(.*)\]\((.*)\)/.match(s) # Image
139
133
 
140
- if temp_md_table
141
- doc.items.append temp_md_table
142
- temp_md_table = nil
143
- end
134
+ temp_md_table = process_temp_table(doc, temp_md_table)
144
135
  if temp_md_list
145
136
  doc.items.append temp_md_list
146
137
  temp_md_list = nil
@@ -157,35 +148,29 @@ class DocParser
157
148
 
158
149
  elsif res = /^(\*\s+)(.*)/.match(s) # check if unordered list start
159
150
 
160
- if temp_md_table
161
- doc.items.append temp_md_table
162
- temp_md_table = nil
163
- end
151
+ temp_md_table = process_temp_table(doc, temp_md_table)
164
152
 
165
153
  row = res[2]
166
154
 
167
155
  if temp_md_list
168
- temp_md_list.addRow(s)
156
+ temp_md_list.add_row(s)
169
157
  else
170
158
  item = MarkdownList.new(doc, false)
171
- item.addRow(s)
159
+ item.add_row(s)
172
160
  temp_md_list = item
173
161
  end
174
162
 
175
163
  elsif res = /^\d[.]\s(.*)/.match(s) # check if ordered list start
176
164
 
177
- if temp_md_table
178
- doc.items.append temp_md_table
179
- temp_md_table = nil
180
- end
165
+ temp_md_table = process_temp_table(doc, temp_md_table)
181
166
 
182
167
  row = res[1]
183
168
 
184
169
  if temp_md_list
185
- temp_md_list.addRow(s)
170
+ temp_md_list.add_row(s)
186
171
  else
187
172
  item = MarkdownList.new(doc, true)
188
- item.addRow(s)
173
+ item.add_row(s)
189
174
  temp_md_list = item
190
175
  end
191
176
 
@@ -199,39 +184,50 @@ class DocParser
199
184
  if res = /^[|](-{3,})[|]/.match(s) # check if it is a separator first
200
185
 
201
186
  if temp_md_table
202
- # separator is found after heading - just skip it
187
+ # separator is found after heading
188
+ temp_md_table.is_separator_detected = true
203
189
  else
204
190
  # separator out of table scope consider it just as a regular paragraph
205
- item = Paragraph.new(s)
206
- item.parent_doc = doc
207
- item.parent_heading = doc.headings[-1]
191
+ item = Paragraph.new(doc, s)
208
192
  doc.items.append(item)
209
193
  end
210
194
 
211
- elsif res = /^[|](.*[|])/.match(s) # check if it looks as a table
195
+ elsif res = /^[|](.*[|])/.match(s) # check if it looks as a table row
212
196
 
213
197
  row = res[1]
214
198
 
215
199
  if temp_md_table
216
- # check if it is a controlled table
217
- unless temp_md_table.addRow(row)
218
- temp_md_table = ControlledTable.new(temp_md_table, doc)
219
- temp_md_table.parent_doc = doc
220
- temp_md_table.addRow(row)
200
+ if temp_md_table.is_separator_detected # if there is a separator
201
+ # check if parent doc is a Protocol
202
+ if doc.instance_of? Protocol
203
+ # check if it is a controlled table
204
+ tmp = /(.*)\s+>\[(\S*)\]/.match(row)
205
+ if tmp && (temp_md_table.instance_of? MarkdownTable)
206
+ # this is not a regular Markdown table
207
+ # so the table type shall be changed and this row shall be passed one more time
208
+ temp_md_table = ControlledTable.new(doc, temp_md_table)
209
+ end
210
+ end
211
+ temp_md_table.add_row(row)
212
+ else
213
+ # replece table heading with regular paragraph
214
+ item = Paragraph.new(doc, temp_md_table.heading_row)
215
+ doc.items.append(item)
216
+ # and current row
217
+ item = Paragraph.new(doc, s)
218
+ doc.items.append(item)
219
+ temp_md_table = nil
221
220
  end
222
221
  else
223
222
  # start table from heading
224
- temp_md_table = MarkdownTable.new(row)
225
- temp_md_table.parent_doc = doc
223
+ temp_md_table = MarkdownTable.new(doc, s)
226
224
  end
227
225
  end
228
226
 
229
227
  elsif res = /^>(.*)/.match(s) # check if blockquote
230
228
 
231
- if temp_md_table
232
- doc.items.append temp_md_table
233
- temp_md_table = nil
234
- end
229
+ temp_md_table = process_temp_table(doc, temp_md_table)
230
+
235
231
  if temp_md_list
236
232
  doc.items.append temp_md_list
237
233
  temp_md_list = nil
@@ -244,10 +240,7 @@ class DocParser
244
240
 
245
241
  elsif res = /^```(\w*)/.match(s) # check if code block
246
242
 
247
- if temp_md_table
248
- doc.items.append temp_md_table
249
- temp_md_table = nil
250
- end
243
+ temp_md_table = process_temp_table(doc, temp_md_table)
251
244
  if temp_md_list
252
245
  doc.items.append temp_md_list
253
246
  temp_md_list = nil
@@ -268,10 +261,7 @@ class DocParser
268
261
 
269
262
  elsif res = /^TODO:(.*)/.match(s) # check if TODO block
270
263
 
271
- if temp_md_table
272
- doc.items.append temp_md_table
273
- temp_md_table = nil
274
- end
264
+ temp_md_table = process_temp_table(doc, temp_md_table)
275
265
  if temp_md_list
276
266
  doc.items.append temp_md_list
277
267
  temp_md_list = nil
@@ -286,13 +276,10 @@ class DocParser
286
276
  doc.todo_blocks.append(item)
287
277
 
288
278
  else # Reqular Paragraph
289
- if temp_md_table
290
- doc.items.append temp_md_table
291
- temp_md_table = nil
292
- end
279
+ temp_md_table = process_temp_table(doc, temp_md_table)
293
280
  if temp_md_list
294
281
  if MarkdownList.unordered_list_item?(s) || MarkdownList.ordered_list_item?(s)
295
- temp_md_list.addRow(s)
282
+ temp_md_list.add_row(s)
296
283
  next
297
284
  else
298
285
  doc.items.append temp_md_list
@@ -302,9 +289,7 @@ class DocParser
302
289
  if temp_code_block
303
290
  temp_code_block.code_lines.append(s)
304
291
  else
305
- item = Paragraph.new(s)
306
- item.parent_doc = doc
307
- item.parent_heading = doc.headings[-1]
292
+ item = Paragraph.new(doc, s)
308
293
  doc.items.append(item)
309
294
  end
310
295
  end
@@ -314,10 +299,7 @@ class DocParser
314
299
  end
315
300
  end
316
301
  # Finalize non-closed elements
317
- if temp_md_table
318
- doc.items.append temp_md_table
319
- temp_md_table = nil
320
- end
302
+ temp_md_table = process_temp_table(doc, temp_md_table)
321
303
  if temp_md_list
322
304
  doc.items.append temp_md_list
323
305
  temp_md_list = nil
@@ -331,4 +313,18 @@ class DocParser
331
313
  item.parent_doc = doc
332
314
  doc.items.append(item)
333
315
  end
316
+
317
+ def self.process_temp_table(doc, temp_md_table) # rubocop:disable Metrics/MethodLength
318
+ if temp_md_table
319
+ if temp_md_table.is_separator_detected
320
+ doc.items.append temp_md_table
321
+ else # no separator
322
+ # replece table heading with regular paragraph
323
+ item = Paragraph.new(doc, temp_md_table.heading_row)
324
+ doc.items.append(item)
325
+ end
326
+ temp_md_table = nil
327
+ end
328
+ temp_md_table
329
+ end
334
330
  end
@@ -4,6 +4,7 @@ class BaseDocument
4
4
  attr_accessor :title
5
5
  attr_accessor :id
6
6
  attr_accessor :dom
7
+ attr_accessor :headings
7
8
 
8
9
  def initialize()
9
10
  @items = Array.new
@@ -4,14 +4,16 @@ class Coverage < BaseDocument
4
4
 
5
5
  attr_accessor :top_doc
6
6
  attr_accessor :bottom_doc
7
+ attr_accessor :covered_items
7
8
 
8
9
  def initialize(top_doc)
9
10
  super()
10
11
  @top_doc = top_doc
11
- @bottom_doc = bottom_doc
12
+ @bottom_doc = nil
12
13
 
13
14
  @id = top_doc.id + "-" + "tests"
14
15
  @title = "Coverage Matrix: " + @id
16
+ @covered_items = {}
15
17
  end
16
18
 
17
19
  def to_console
@@ -64,6 +66,7 @@ class Coverage < BaseDocument
64
66
  s += "\t\t<td class=\"item_id\" #{test_step_color}><a href=\"./../../tests/protocols/#{bottom_item.parent_doc.id}/#{bottom_item.parent_doc.id}.html##{bottom_item.id}\" class=\"external\">#{bottom_item.id}</a></td>\n"
65
67
  s += "\t\t<td class=\"item_text\" style='width: 42%;'>#{bottom_item.columns[1].text}</td>\n"
66
68
  s += "\t</tr>\n"
69
+ @covered_items[top_item.id.to_s.downcase] = top_item
67
70
  end
68
71
  else
69
72
  s += "\t<tr>\n"
@@ -26,15 +26,15 @@ class Index < BaseDocument
26
26
  s = "<h2>Specifications</h2>\n"
27
27
  s += "<table class=\"controlled\">\n"
28
28
  s += "\t<thead>\n"
29
- s += "\t\t<th>Title</th>\n"
30
- s += "\t\t<th>Items</th>\n"
31
- s += "\t\t<th>Items<br>w/ Uplinks</th>\n"
32
- s += "\t\t<th>Items<br>w/ Downlinks</th>\n"
33
- s += "\t\t<th>Covered<br>by Tests</th>\n"
34
- s += "\t\t<th>Duplicated<br>ids</th>\n"
35
- s += "\t\t<th>Wrong<br>links</th>\n"
36
- s += "\t\t<th>TODOs</th>\n"
37
- s += "\t\t<th>Last Used<br>id</th>\n"
29
+ s += "\t\t<th title=\"Document title\">Title</th>\n"
30
+ s += "\t\t<th title=\"Number of Controlled Paragraphs\">Items</th>\n"
31
+ s += "\t\t<th title=\"Number of Controlled Paragraphs with up-links\">Items<br>w/ Up-links</th>\n"
32
+ s += "\t\t<th title=\"Number of references from other documents\">Items<br>w/ Down-links</th>\n"
33
+ s += "\t\t<th title=\"Number of Controlled Paragraphs mentioned in Test Cases\">Covered <br>by Tests</th>\n"
34
+ s += "\t\t<th title=\"Number of Controlled Paragraphs that have the same ID\">Duplicated<br>IDs</th>\n"
35
+ s += "\t\t<th title=\"Number of Controlled Paragraphs that link to non-existing items\">Wrong<br>links</th>\n"
36
+ s += "\t\t<th title=\"Number of 'TODO:' blocks in document\">TODOs</th>\n"
37
+ s += "\t\t<th title=\"The last Controlled Paragraph sequence number (ID) used in the document\">Last Used<br>ID</th>\n"
38
38
  s += "</thead>\n"
39
39
  html_rows.append s
40
40
 
@@ -51,11 +51,11 @@ class Index < BaseDocument
51
51
  if doc.duplicated_ids_number >0
52
52
  s += "\t\t<td class=\"item_id\" style='width: 7%; background-color: #fcc;'>"
53
53
  s += "<div id=\"DL_#{doc.id}\" style=\"display: block;\">"
54
- s += "<a href=\"#\" onclick=\"downlink_OnClick(this.parentElement); return false;\" class=\"external\">#{doc.duplicated_ids_number.to_s}</a>"
54
+ s += "<a href=\"#\" onclick=\"downlink_OnClick(this.parentElement); return false;\" class=\"external\" title=\"Number of Controlled Paragraphs that have the same ID\">#{doc.duplicated_ids_number.to_s}</a>"
55
55
  s += "</div>"
56
56
  s += "<div id=\"DLS_#{doc.id}\" style=\"display: none;\">"
57
57
  doc.duplicates_list.each do |lnk|
58
- s += "\t\t\t<a href=\"./specifications/#{doc.id}/#{doc.id}.html##{lnk.id}\" class=\"external\">#{lnk.id}</a>\n<br>"
58
+ s += "\t\t\t<a href=\"./specifications/#{doc.id}/#{doc.id}.html##{lnk.id}\" class=\"external\" title=\"Controlled Paragraph with duplicated ID\">#{lnk.id}</a>\n<br>"
59
59
  end
60
60
  s += "</div>"
61
61
  s += "</td>\n"
@@ -66,11 +66,11 @@ class Index < BaseDocument
66
66
  if doc.wrong_links_hash.length >0
67
67
  s += "\t\t<td class=\"item_id\" style='width: 7%; background-color: #fcc;'>"
68
68
  s += "<div id=\"DL_#{doc.id}wl\" style=\"display: block;\">"
69
- s += "<a href=\"#\" onclick=\"downlink_OnClick(this.parentElement); return false;\" class=\"external\">#{doc.wrong_links_hash.length.to_s}</a>"
69
+ s += "<a href=\"#\" onclick=\"downlink_OnClick(this.parentElement); return false;\" class=\"external\" title=\"Number of Controlled Paragraphs that link to non-existing items\">#{doc.wrong_links_hash.length.to_s}</a>"
70
70
  s += "</div>"
71
71
  s += "<div id=\"DLS_#{doc.id}wl\" style=\"display: none;\">"
72
72
  doc.wrong_links_hash.each do |wrong_lnk, item|
73
- s += "\t\t\t<a href=\"./specifications/#{doc.id}/#{doc.id}.html##{item.id}\" class=\"external\">#{wrong_lnk}</a>\n<br>"
73
+ s += "\t\t\t<a href=\"./specifications/#{doc.id}/#{doc.id}.html##{item.id}\" class=\"external\" title=\"Controlled Paragraphs that link to non-existing items\">#{wrong_lnk}</a>\n<br>"
74
74
  end
75
75
  s += "</div>"
76
76
  s += "</td>\n"
@@ -94,10 +94,10 @@ class Index < BaseDocument
94
94
  s = "<h2>Traceability Matrices</h2>\n"
95
95
  s += "<table class=\"controlled\">\n"
96
96
  s += "\t<thead>\n"
97
- s += "\t\t<th>Title</th>\n"
98
- s += "\t\t<th>Coverage</th>\n"
99
- s += "\t\t<th>Top Document</th>\n"
100
- s += "\t\t<th>Bottom Document</th>\n"
97
+ s += "\t\t<th title=\"Traceability Matrix Title\">Title</th>\n"
98
+ s += "\t\t<th title=\"The ratio of Controlled Paragraphs mentioned in other documents and not-mentioned ones\">Coverage</th>\n"
99
+ s += "\t\t<th title=\"Document, that contains Cotroled Paragraphs to be referenced in Bottom document(s)\">Top Document</th>\n"
100
+ s += "\t\t<th title=\"Document(s), that contains references to Controlled Paragraphs from the Top Document\">Bottom Document</th>\n"
101
101
  s += "</thead>\n"
102
102
  html_rows.append s
103
103
 
@@ -136,6 +136,9 @@ class Index < BaseDocument
136
136
  s += "<table class=\"controlled\">\n"
137
137
  s += "\t<thead>\n"
138
138
  s += "\t\t<th>Title</th>\n"
139
+ s += "\t\t<th title=\"The ratio of Controlled Paragraphs mentioned in test protocols \
140
+ and total number of Controlled Paragraphs\">Coverage</th>\n"
141
+ s += "\t\t<th title=\"Numbers of passed and failed test steps\">Test Results</th>\n"
139
142
  s += "\t\t<th>Specification Covered</th>\n"
140
143
  s += "</thead>\n"
141
144
  html_rows.append s
@@ -144,8 +147,13 @@ class Index < BaseDocument
144
147
 
145
148
  sorted_items.each do |doc|
146
149
  s = "\t<tr>\n"
150
+ coverage = doc.covered_items.length.to_f / doc.top_doc.controlled_items.length * 100.0
147
151
  s += "\t\t<td class=\"item_text\" style='padding: 5px;'><a href=\"./specifications/#{doc.id}/#{doc.id}.html\" class=\"external\">#{doc.title}</a></td>\n"
148
- s += "\t\t<td class=\"item_text\" style='width: 25%; padding: 5px;'>#{doc.top_doc.title}</td>\n"
152
+ s += "\t\t<td class=\"item_id\" style='width: 7%;'>#{'%.2f' % coverage}%</td>\n"
153
+ s += "\t\t<td class=\"item_id\" style='width: 7%;'> n/a </td>\n"
154
+ s += "\t\t<td class=\"item_text\" style='width: 25%; padding: 5px;'>\
155
+ <i class=\"fa fa-file-text-o\" style='background-color: ##{doc.top_doc.color};'> </i>\
156
+ #{doc.top_doc.title}</td>\n"
149
157
  s += "</tr>\n"
150
158
  html_rows.append s
151
159
  end
@@ -1,104 +1,67 @@
1
- require_relative "persistent_document"
1
+ # frozen_string_literal: true
2
2
 
3
- class Specification < PersistentDocument
4
-
5
- attr_accessor :dictionary
6
- attr_accessor :todo_blocks
7
- attr_accessor :wrong_links_hash
8
-
9
- attr_accessor :items_with_uplinks_number
10
- attr_accessor :items_with_downlinks_number
11
- attr_accessor :items_with_coverage_number
12
- attr_accessor :duplicated_ids_number
13
- attr_accessor :duplicates_list
14
- attr_accessor :last_used_id
15
- attr_accessor :last_used_id_number
16
- attr_accessor :color
17
-
18
- def initialize(fele_path)
19
- super
20
- @dictionary = Hash.new
21
- @duplicates_list = Array.new
22
- @todo_blocks = Array.new
23
- @wrong_links_hash = Hash.new
24
-
25
- @items_with_uplinks_number = 0
26
- @items_with_downlinks_number = 0
27
- @items_with_coverage_number = 0
28
- @duplicated_ids_number = 0
29
- @last_used_id = ""
30
- @last_used_id_number = 0
31
-
32
- @color = 'bbb'
3
+ require_relative 'persistent_document'
33
4
 
34
- @id = File.basename(fele_path, File.extname(fele_path)).downcase
5
+ class Specification < PersistentDocument
6
+ attr_accessor :dictionary, :todo_blocks, :wrong_links_hash, :items_with_uplinks_number, :items_with_downlinks_number,
7
+ :items_with_coverage_number, :duplicated_ids_number, :duplicates_list, :last_used_id,
8
+ :last_used_id_number, :color
9
+
10
+ def initialize(fele_path)
11
+ super
12
+ @dictionary = {}
13
+ @duplicates_list = []
14
+ @todo_blocks = []
15
+ @wrong_links_hash = {}
16
+
17
+ @items_with_uplinks_number = 0
18
+ @items_with_downlinks_number = 0
19
+ @items_with_coverage_number = 0
20
+ @duplicated_ids_number = 0
21
+ @last_used_id = ''
22
+ @last_used_id_number = 0
23
+
24
+ @color = 'bbb'
25
+
26
+ @id = File.basename(fele_path, File.extname(fele_path)).downcase
27
+ end
28
+
29
+ def to_console
30
+ puts ''
31
+ puts "\e[33mSpecification: #{@title}\e[0m"
32
+ puts '-' * 53
33
+ puts '| Number of Controlled Items | %10d |' % @controlled_items.length
34
+ puts format('| Number of Items w/ Up-links | %10d |', @items_with_uplinks_number)
35
+ puts format('| Number of Items w/ Down-links | %10d |', @items_with_downlinks_number)
36
+
37
+ # coverage
38
+ if @controlled_items.length.positive? && (@controlled_items.length == @items_with_coverage_number)
39
+ puts format("| Number of Items w/ Test Coverage |\e[1m\e[32m %10d \e[0m|", @items_with_coverage_number)
40
+ else
41
+ puts format('| Number of Items w/ Test Coverage | %10d |', @items_with_coverage_number)
35
42
  end
36
43
 
37
- def to_console
38
- puts ""
39
- puts "\e[33m" + "Specification: " + @title + "\e[0m"
40
- puts "-" * 53
41
- puts "| Number of Controlled Items | %10d |" % @controlled_items.length
42
- puts "| Number of Items w/ Up-links | %10d |" % @items_with_uplinks_number
43
- puts "| Number of Items w/ Down-links | %10d |" % @items_with_downlinks_number
44
-
45
- # coverage
46
- if (@controlled_items.length > 0) && (@controlled_items.length == @items_with_coverage_number)
47
- puts "| Number of Items w/ Test Coverage |\e[1m\e[32m %10d \e[0m|" % @items_with_coverage_number
48
- else
49
- puts "| Number of Items w/ Test Coverage | %10d |" % @items_with_coverage_number
50
- end
51
-
52
- # duplicates
53
- if @duplicated_ids_number >0
54
- puts "| Duplicated Item Ids found |\e[1m\e[31m %10d \e[0m|" % @duplicated_ids_number
55
- else
56
- puts "| Duplicated Item Ids found | %10d |" % @duplicated_ids_number
57
- end
58
-
59
- puts "| Last used Item Id |\e[1m\e[37m %10s \e[0m|" % @last_used_id
60
- puts "-" * 53
44
+ # duplicates
45
+ if @duplicated_ids_number.positive?
46
+ puts format("| Duplicated Item Ids found |\e[1m\e[31m %10d \e[0m|", @duplicated_ids_number)
47
+ else
48
+ puts format('| Duplicated Item Ids found | %10d |', @duplicated_ids_number)
61
49
  end
62
50
 
63
- def to_html(nav_pane, output_file_path)
51
+ puts format("| Last used Item Id |\e[1m\e[37m %10s \e[0m|", @last_used_id)
52
+ puts '-' * 53
53
+ end
64
54
 
65
- html_rows = Array.new
55
+ def to_html(nav_pane, output_file_path)
56
+ html_rows = []
66
57
 
67
- html_rows.append('')
68
-
69
- @items.each do |item|
70
- a = item.to_html
71
- #a = adjust_internal_links(a, nav_pane.specifications)
72
- html_rows.append a
73
- end
74
-
75
- self.save_html_to_file(html_rows, nav_pane, output_file_path)
76
-
77
- end
58
+ html_rows.append('')
78
59
 
79
- def adjust_internal_links(line, specifications)
80
- # check if there are internal links to md files and replace them
81
- if tmp = /<a\shref="(.*)"\sclass="external">.*<\/a>/.match(line)
82
- if res = /(\w*)[.]md/.match(tmp[1])
83
- id = res[1].downcase
84
- res = /(\w*)[.]md(#.*)/.match(tmp[1])
85
-
86
- specifications.each do |spec|
87
- if spec.id.downcase == id
88
- if res && res.length > 2
89
- anchor = res[2]
90
- line.sub!(/<a\shref="(.*)"\sclass="external">/,
91
- "<a href=\".\\..\\#{id}\\#{id}.html#{anchor}\" class=\"external\">")
92
- else
93
- line.sub!(/<a\shref="(.*)"\sclass="external">/,
94
- "<a href=\".\\..\\#{id}\\#{id}.html\" class=\"external\">")
95
- end
96
- break
97
- end
98
- end
99
- end
100
- end
101
- return line
60
+ @items.each do |item|
61
+ a = item.to_html
62
+ html_rows.append a
102
63
  end
103
64
 
104
- end
65
+ save_html_to_file(html_rows, nav_pane, output_file_path)
66
+ end
67
+ end
@@ -8,11 +8,15 @@ class Traceability < BaseDocument
8
8
  attr_accessor :is_agregated
9
9
  attr_accessor :traced_items
10
10
 
11
- def initialize(top_doc, bottom_doc, is_agregated)
11
+ def initialize(top_doc, bottom_doc)
12
12
  super()
13
13
  @top_doc = top_doc
14
14
  @bottom_doc = bottom_doc
15
- @is_agregated = is_agregated
15
+ @is_agregated = if bottom_doc
16
+ false
17
+ else
18
+ true
19
+ end
16
20
  @traced_items = {}
17
21
 
18
22
  if @is_agregated
@@ -1,28 +1,25 @@
1
1
  class DocSection
2
+ attr_accessor :sections, :heading, :parent_section
2
3
 
3
- attr_accessor :sections
4
- attr_accessor :heading
5
- attr_accessor :parent_section
4
+ def initialize(heading)
5
+ @sections = []
6
+ @heading = heading
7
+ @parent_section = nil
8
+ end
6
9
 
7
- def initialize(heading)
8
- @sections = Array.new
9
- @heading = heading
10
- @parent_section = nil
10
+ def to_html # rubocop:disable Metrics/MethodLength
11
+ s = ''
12
+ s += "\t<li onclick=\"nav_toggle_expand_list(this, event)\">" \
13
+ '<span class="fa-li"><i class="fa fa-minus-square-o"> </i></span>'
14
+ s += "<a href=\"##{@heading.anchor_id}\">#{@heading.get_section_info}</a>\n"
15
+ unless @sections.empty?
16
+ s += "\t\t<ul class=\"fa-ul\">\n"
17
+ @sections.each do |sub_section|
18
+ s += sub_section.to_html
19
+ end
20
+ s += "\t\t</ul>\n"
11
21
  end
12
-
13
- def to_html
14
- s = ''
15
- s += "\t<li><span class=\"fa-li\"><i class=\"fa fa-sticky-note-o\"> </i></span>"
16
- s += "<a href=\"\#" + @heading.anchor_id.to_s + "\">" + @heading.get_section_info + "</a>\n"
17
- if @sections.length >0
18
- s += "\t\t<ul class=\"fa-ul\">\n"
19
- @sections.each do |sub_section|
20
- s += sub_section.to_html()
21
- end
22
- s += "\t\t</ul>\n"
23
- end
24
- s += "</li>\n"
25
- return s
26
- end
27
-
28
- end
22
+ s += "</li>\n"
23
+ s
24
+ end
25
+ end