Almirah 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 877a4c7b296af5fa0418113a4287df82661d23903764f73a74b8794d2be22d9a
4
- data.tar.gz: 4195b1434e0ca4c75177c4af9ea3e97ffa9a373106bda58fa11621ba273df7cf
3
+ metadata.gz: 1841cdb6a5d88bcbe36d8ed926fd8f659e9a630d58763ead2b78e8b7f17281dd
4
+ data.tar.gz: 13b91603331fe68ff13f4b1917806551f94f11d98084ce773a1e247abb4b1abb
5
5
  SHA512:
6
- metadata.gz: 4425611cadee99f5686c79abbc853d93bbfeb0e729a97168f93842d998daf8e1a879de8e25918fcbd01bd49abe2b842cc192f24d137cd987d77816f606abed15
7
- data.tar.gz: ca609c497ebde13428c516a0369f860c323f7bcaba740424d125b9a3c4bd2e1955f8f8aec665d6afd088cc44772c4edfaba5dc64f47827be631253111f82a446
6
+ metadata.gz: ed609c1862a9f33b46c2379ae8f08904c30a00767939418e28600267ccc449aa88b7bcf96efc661c1c3d39d9a720a12491c01eed4c0c30034623f342a47d5d70
7
+ data.tar.gz: e5c91e4efbd5d96d915ad2228b22982391ccc91eae8afc545dc8c1fd1a8f077a690d9da988e47794df470eda560e7f6a0a99ec7a173d33660c0cc532de1c5e97
@@ -52,6 +52,7 @@ class DocFabric
52
52
  level = res[1].length
53
53
  value = res[2]
54
54
  item = Heading.new(value, level)
55
+ item.parent_doc = doc
55
56
  doc.items.append(item)
56
57
  doc.headings.append(item)
57
58
 
@@ -85,12 +86,25 @@ class DocFabric
85
86
  end
86
87
 
87
88
  item = ControlledParagraph.new( text, id )
88
- item.up_link = up_link
89
+ item.parent_doc = doc
90
+ if up_link
91
+ item.up_link = up_link
92
+ doc.items_with_uplinks_number += 1 #for statistics
93
+ end
89
94
 
90
95
  doc.items.append(item)
91
96
  doc.dictionary[ id.to_s ] = item #for fast search
92
97
  doc.controlled_items.append(item) #for fast search
93
98
 
99
+ #for statistics
100
+ n = /\d+/.match(id)[0].to_i
101
+ if n == doc.last_used_id_number
102
+ doc.duplicated_ids_number += 1
103
+ elsif n > doc.last_used_id_number
104
+ doc.last_used_id = id
105
+ doc.last_used_id_number = n
106
+ end
107
+
94
108
  elsif res = /^[!]\[(.*)\]\((.*)\)/.match(s) # Image
95
109
 
96
110
  if tempMdTable
@@ -106,6 +120,7 @@ class DocFabric
106
120
  img_path = res[2]
107
121
 
108
122
  item = Image.new( img_text, img_path )
123
+ item.parent_doc = doc
109
124
 
110
125
  doc.items.append(item)
111
126
 
@@ -122,6 +137,7 @@ class DocFabric
122
137
  tempMdList.addRow(row)
123
138
  else
124
139
  item = MarkdownList.new(row)
140
+ item.parent_doc = doc
125
141
  tempMdList = item
126
142
  end
127
143
 
@@ -139,6 +155,7 @@ class DocFabric
139
155
  else
140
156
  #separator out of table scope consider it just as a regular paragraph
141
157
  item = Paragraph.new(s)
158
+ item.parent_doc = doc
142
159
  doc.items.append(item)
143
160
  end
144
161
 
@@ -150,11 +167,13 @@ class DocFabric
150
167
  # check if it is a controlled table
151
168
  unless tempMdTable.addRow(row)
152
169
  tempMdTable = ControlledTable.new(tempMdTable, doc)
170
+ tempMdTable.parent_doc = doc
153
171
  tempMdTable.addRow(row)
154
172
  end
155
173
  else
156
174
  #start table from heading
157
175
  tempMdTable = MarkdownTable.new(row)
176
+ tempMdTable.parent_doc = doc
158
177
  end
159
178
  end
160
179
 
@@ -170,6 +189,7 @@ class DocFabric
170
189
  end
171
190
 
172
191
  item = Blockquote.new(res[1])
192
+ item.parent_doc = doc
173
193
  doc.items.append(item)
174
194
 
175
195
  else # Reqular Paragraph
@@ -183,6 +203,7 @@ class DocFabric
183
203
  end
184
204
 
185
205
  item = Paragraph.new(s)
206
+ item.parent_doc = doc
186
207
  doc.items.append(item)
187
208
  end
188
209
  end
@@ -8,7 +8,7 @@ class ControlledParagraph < Paragraph
8
8
  attr_accessor :coverage_links
9
9
 
10
10
  def initialize(text, id)
11
- @text = text
11
+ @text = text.strip
12
12
  @id = id
13
13
  @up_link = nil
14
14
  @down_links = nil
@@ -23,14 +23,14 @@ class ControlledParagraph < Paragraph
23
23
  @@htmlTableRenderInProgress = true
24
24
  end
25
25
  s += "\t<tr>\n"
26
- s += "\t\t<td class=\"item_id\"> <a name=\"#{@id}\"></a>#{@id} </td>\n"
26
+ s += "\t\t<td class=\"item_id\"> <a name=\"#{@id}\" id=\"#{@id}\" href=\"##{@id}\">#{@id}</a></td>\n"
27
27
  s += "\t\t<td class=\"item_text\">#{@text}</td>\n"
28
28
 
29
29
  if @up_link
30
30
  if tmp = /^([a-zA-Z]+)[-]\d+/.match(@up_link)
31
31
  up_link_doc_name = tmp[1].downcase
32
32
  end
33
- s += "\t\t<td class=\"item_id\"><a href=\"./../#{up_link_doc_name}/#{up_link_doc_name}.html\" class=\"external\">#{@up_link}</a></td>\n"
33
+ s += "\t\t<td class=\"item_id\"><a href=\"./../#{up_link_doc_name}/#{up_link_doc_name}.html##{@up_link}\" class=\"external\">#{@up_link}</a></td>\n"
34
34
  else
35
35
  s += "\t\t<td class=\"item_id\"></td>\n"
36
36
  end
@@ -23,15 +23,17 @@ end
23
23
  class TestStepNumberColumn < ControlledTableColumn
24
24
 
25
25
  attr_accessor :step_number
26
+ attr_accessor :row_id
26
27
 
27
28
  def initialize(text)
28
29
  text = text.strip
29
30
  @step_number = text.to_i
30
31
  @text = text
32
+ @row_id = ""
31
33
  end
32
34
 
33
35
  def to_html
34
- "\t\t<td style=\"text-align: center;\">#{@text}</td>\n\r"
36
+ "\t\t<td style=\"text-align: center;\"><a name=\"#{@row_id}\" id=\"#{@row_id}\" href=\"##{@row_id}\">#{@text}</a></td>\n\r"
35
37
  end
36
38
  end
37
39
 
@@ -70,7 +72,7 @@ class TestStepReferenceColumn < ControlledTableColumn
70
72
 
71
73
  def to_html
72
74
  if @up_link
73
- "\t\t<td class=\"item_id\"><a href=\"./../../../specifications/#{@up_link_doc_id}/#{@up_link_doc_id}.html\" class=\"external\">#{@up_link}</a></td>\n\r"
75
+ "\t\t<td class=\"item_id\"><a href=\"./../../../specifications/#{@up_link_doc_id}/#{@up_link_doc_id}.html##{@up_link}\" class=\"external\">#{@up_link}</a></td>\n\r"
74
76
  else
75
77
  "\t\t<td style=\"text-align: center;\"></td>\n\r"
76
78
  end
@@ -83,7 +85,6 @@ class ControlledTable < DocItem
83
85
 
84
86
  attr_accessor :column_names
85
87
  attr_accessor :rows
86
- attr_accessor :parent_doc
87
88
 
88
89
  def initialize(markdown_table, parent_doc)
89
90
  @parent_doc = parent_doc
@@ -108,6 +109,7 @@ class ControlledTable < DocItem
108
109
  def format_columns(columns)
109
110
 
110
111
  new_row = ControlledTableRow.new
112
+ new_row.parent_doc = @parent_doc
111
113
 
112
114
  columns.each_with_index do | element, index |
113
115
 
@@ -116,6 +118,7 @@ class ControlledTable < DocItem
116
118
  col = TestStepNumberColumn.new element
117
119
  new_row.columns.append col
118
120
  new_row.id = @parent_doc.id + '.' + col.text
121
+ col.row_id = new_row.id
119
122
 
120
123
  elsif index + 1 == columns.length # it is expected that a link is placed to the last column only
121
124
 
@@ -1,4 +1,8 @@
1
1
  class DocItem
2
+ attr_accessor :parent_doc
3
+
4
+ @parent_doc = nil
5
+
2
6
  @@htmlTableRenderInProgress = false
3
7
  end
4
8
 
@@ -15,4 +15,31 @@ class BaseDocument
15
15
  @title = ""
16
16
  @id = ""
17
17
  end
18
+
19
+ def save_html_to_file html_rows, nav_pane, output_file_path
20
+
21
+ gem_root = File.expand_path './../../..', File.dirname(__FILE__)
22
+ template_file = gem_root + "/lib/almirah/templates/page.html"
23
+
24
+ file = File.open( template_file )
25
+ file_data = file.readlines
26
+ file.close
27
+
28
+ output_file_path += "#{@id}/#{@id}.html"
29
+ file = File.open( output_file_path, "w" )
30
+ file_data.each do |s|
31
+ if s.include?('{{CONTENT}}')
32
+ html_rows.each do |r|
33
+ file.puts r
34
+ end
35
+ elsif s.include?('{{NAV_PANE}}')
36
+ if nav_pane
37
+ file.puts nav_pane.to_html
38
+ end
39
+ else
40
+ file.puts s
41
+ end
42
+ end
43
+ file.close
44
+ end
18
45
  end
@@ -0,0 +1,82 @@
1
+ require_relative "base_document"
2
+
3
+ class Coverage < BaseDocument
4
+
5
+ attr_accessor :top_doc
6
+ attr_accessor :bottom_doc
7
+ attr_accessor :items
8
+
9
+ def initialize(top_doc)
10
+
11
+ @top_doc = top_doc
12
+ @bottom_doc = bottom_doc
13
+
14
+ @items = Array.new
15
+ @headings = Array.new
16
+
17
+ @id = top_doc.id + "-" + "tests"
18
+ @title = "Coverage Matrix: " + @id
19
+ end
20
+
21
+ def to_console
22
+ puts "\e[35m" + "Traceability: " + @id + "\e[0m"
23
+ end
24
+
25
+ def to_html(nav_pane, output_file_path)
26
+
27
+ html_rows = Array.new
28
+
29
+ html_rows.append('')
30
+ s = "<h1>#{@title}</h1>\n"
31
+ s += "<table class=\"controlled\">\n"
32
+ s += "\t<thead> <th>#</th> <th style='font-weight: bold;'>#{@top_doc.title}</th> <th>#</th> <th style='font-weight: bold;'>Test CaseId.StepId</th> </thead>\n"
33
+ html_rows.append s
34
+
35
+ sorted_items = @top_doc.controlled_items.sort_by { |w| w.id }
36
+
37
+ sorted_items.each do |top_item|
38
+ row = render_table_row top_item
39
+ html_rows.append row
40
+ end
41
+ html_rows.append "</table>\n"
42
+
43
+ self.save_html_to_file(html_rows, nav_pane, output_file_path)
44
+
45
+ end
46
+
47
+ def render_table_row(top_item)
48
+ s = ""
49
+ if top_item.coverage_links
50
+ if top_item.coverage_links.length > 1
51
+ id_color = "" # "style='background-color: #fff8c5;'" # disabled for now
52
+ else
53
+ id_color = ""
54
+ end
55
+ top_item.coverage_links.each do |bottom_item|
56
+ s += "\t<tr>\n"
57
+ s += "\t\t<td class=\"item_id\" #{id_color}><a href=\"./../#{top_item.parent_doc.id}/#{top_item.parent_doc.id}.html##{top_item.id}\" class=\"external\">#{top_item.id}</a></td>\n"
58
+ s += "\t\t<td class=\"item_text\" style='width: 42%;'>#{top_item.text}</td>\n"
59
+
60
+ if bottom_item.columns[-2].text.downcase == "pass"
61
+ test_step_color = "style='background-color: #cfc;'"
62
+ elsif bottom_item.columns[-2].text.downcase == "fail"
63
+ test_step_color = "style='background-color: #fcc;'"
64
+ else
65
+ test_step_color = ""
66
+ end
67
+
68
+ 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"
69
+ s += "\t\t<td class=\"item_text\" style='width: 42%;'>#{bottom_item.columns[1].text}</td>\n"
70
+ s += "\t</tr>\n"
71
+ end
72
+ else
73
+ s += "\t<tr>\n"
74
+ s += "\t\t<td class=\"item_id\"><a href=\"./../#{top_item.parent_doc.id}/#{top_item.parent_doc.id}.html##{top_item.id}\" class=\"external\">#{top_item.id}</a></td>\n"
75
+ s += "\t\t<td class=\"item_text\" style='width: 42%;'>#{top_item.text}</td>\n"
76
+ s += "\t\t<td class=\"item_id\"></td>\n"
77
+ s += "\t\t<td class=\"item_text\" style='width: 42%;'></td>\n"
78
+ s += "\t</tr>\n"
79
+ end
80
+ return s
81
+ end
82
+ end
@@ -19,4 +19,19 @@ class Protocol < BaseDocument
19
19
  @up_link_doc_id = ""
20
20
  end
21
21
 
22
+ def to_html(nav_pane, output_file_path)
23
+
24
+ html_rows = Array.new
25
+
26
+ html_rows.append('')
27
+
28
+ @items.each do |item|
29
+ a = item.to_html
30
+ html_rows.append a
31
+ end
32
+
33
+ self.save_html_to_file(html_rows, nav_pane, output_file_path)
34
+
35
+ end
36
+
22
37
  end
@@ -6,6 +6,13 @@ class Specification < BaseDocument
6
6
  attr_accessor :dictionary
7
7
  attr_accessor :controlled_items
8
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 :last_used_id
14
+ attr_accessor :last_used_id_number
15
+
9
16
  def initialize(fele_path)
10
17
 
11
18
  @path = fele_path
@@ -15,8 +22,56 @@ class Specification < BaseDocument
15
22
  @controlled_items = Array.new
16
23
  @dictionary = Hash.new
17
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
+
18
32
  @id = File.basename(fele_path, File.extname(fele_path)).downcase
19
33
  @up_link_doc_id = ""
20
34
  end
21
35
 
36
+ def to_console
37
+ puts ""
38
+ puts "\e[33m" + "Specification: " + @title + "\e[0m"
39
+ puts "-" * 53
40
+ puts "| Number of Controlled Items | %10d |" % @controlled_items.length
41
+ puts "| Number of Items w/ Up-links | %10d |" % @items_with_uplinks_number
42
+ puts "| Number of Items w/ Down-links | %10d |" % @items_with_downlinks_number
43
+
44
+ # coverage
45
+ if (@controlled_items.length > 0) && (@controlled_items.length == @items_with_coverage_number)
46
+ puts "| Number of Items w/ Test Coverage |\e[1m\e[32m %10d \e[0m|" % @items_with_coverage_number
47
+ else
48
+ puts "| Number of Items w/ Test Coverage | %10d |" % @items_with_coverage_number
49
+ end
50
+
51
+ # duplicates
52
+ if @duplicated_ids_number >0
53
+ puts "| Duplicated Item Ids found |\e[1m\e[31m %10d \e[0m|" % @duplicated_ids_number
54
+ else
55
+ puts "| Duplicated Item Ids found | %10d |" % @duplicated_ids_number
56
+ end
57
+
58
+ puts "| Last used Item Id |\e[1m\e[37m %10s \e[0m|" % @last_used_id
59
+ puts "-" * 53
60
+ end
61
+
62
+ def to_html(nav_pane, output_file_path)
63
+
64
+ html_rows = Array.new
65
+
66
+ html_rows.append('')
67
+
68
+ @items.each do |item|
69
+ a = item.to_html
70
+ html_rows.append a
71
+ end
72
+
73
+ self.save_html_to_file(html_rows, nav_pane, output_file_path)
74
+
75
+ end
76
+
22
77
  end
@@ -0,0 +1,73 @@
1
+ require_relative "base_document"
2
+
3
+ class Traceability < BaseDocument
4
+
5
+ attr_accessor :top_doc
6
+ attr_accessor :bottom_doc
7
+ attr_accessor :items
8
+
9
+ def initialize(top_doc, bottom_doc)
10
+
11
+ @top_doc = top_doc
12
+ @bottom_doc = bottom_doc
13
+
14
+ @items = Array.new
15
+ @headings = Array.new
16
+
17
+ @id = top_doc.id + "-" + bottom_doc.id
18
+ @title = "Traceability Matrix: " + @id
19
+ end
20
+
21
+ def to_console
22
+ puts "\e[35m" + "Traceability: " + @id + "\e[0m"
23
+ end
24
+
25
+ def to_html(nav_pane, output_file_path)
26
+
27
+ html_rows = Array.new
28
+
29
+ html_rows.append('')
30
+ s = "<h1>#{@title}</h1>\n"
31
+ s += "<table class=\"controlled\">\n"
32
+ s += "\t<thead> <th>#</th> <th style='font-weight: bold;'>#{@top_doc.title}</th> <th>#</th> <th style='font-weight: bold;'>#{@bottom_doc.title}</th> </thead>\n"
33
+ html_rows.append s
34
+
35
+ sorted_items = @top_doc.controlled_items.sort_by { |w| w.id }
36
+
37
+ sorted_items.each do |top_item|
38
+ row = render_table_row top_item
39
+ html_rows.append row
40
+ end
41
+ html_rows.append "</table>\n"
42
+
43
+ self.save_html_to_file(html_rows, nav_pane, output_file_path)
44
+
45
+ end
46
+
47
+ def render_table_row(top_item)
48
+ s = ""
49
+ if top_item.down_links
50
+ if top_item.down_links.length > 1
51
+ id_color = "style='background-color: #fff8c5;'"
52
+ else
53
+ id_color = ""
54
+ end
55
+ top_item.down_links.each do |bottom_item|
56
+ s += "\t<tr>\n"
57
+ s += "\t\t<td class=\"item_id\" #{id_color}><a href=\"./../#{top_item.parent_doc.id}/#{top_item.parent_doc.id}.html##{top_item.id}\" class=\"external\">#{top_item.id}</a></td>\n"
58
+ s += "\t\t<td class=\"item_text\" style='width: 42%;'>#{top_item.text}</td>\n"
59
+ s += "\t\t<td class=\"item_id\"><a href=\"./../#{bottom_item.parent_doc.id}/#{bottom_item.parent_doc.id}.html##{bottom_item.id}\" class=\"external\">#{bottom_item.id}</a></td>\n"
60
+ s += "\t\t<td class=\"item_text\" style='width: 42%;'>#{bottom_item.text}</td>\n"
61
+ s += "\t</tr>\n"
62
+ end
63
+ else
64
+ s += "\t<tr>\n"
65
+ s += "\t\t<td class=\"item_id\"><a href=\"./../#{top_item.parent_doc.id}/#{top_item.parent_doc.id}.html##{top_item.id}\" class=\"external\">#{top_item.id}</a></td>\n"
66
+ s += "\t\t<td class=\"item_text\" style='width: 42%;'>#{top_item.text}</td>\n"
67
+ s += "\t\t<td class=\"item_id\"></td>\n"
68
+ s += "\t\t<td class=\"item_text\" style='width: 42%;'></td>\n"
69
+ s += "\t</tr>\n"
70
+ end
71
+ return s
72
+ end
73
+ end
@@ -1,20 +1,19 @@
1
1
  require_relative "doc_fabric"
2
- require_relative "html_render"
3
2
  require_relative "navigation_pane"
3
+ require_relative "doc_types/traceability"
4
+ require_relative "doc_types/coverage"
4
5
 
5
6
  class Project
6
7
 
7
8
  attr_accessor :specifications
8
9
  attr_accessor :protocols
9
10
  attr_accessor :project_root_directory
10
- attr_accessor :gem_root
11
11
  attr_accessor :specifications_dictionary
12
12
 
13
- def initialize(path, gem_root)
13
+ def initialize(path)
14
14
  @project_root_directory = path
15
15
  @specifications = Array.new
16
16
  @protocols = Array.new
17
- @gem_root = gem_root
18
17
  @specifications_dictionary = Hash.new
19
18
 
20
19
  FileUtils.remove_dir(@project_root_directory + "/build", true)
@@ -102,14 +101,14 @@ class Project
102
101
 
103
102
  unless topItem.down_links
104
103
  topItem.down_links = Array.new
104
+ top_document.items_with_downlinks_number += 1 # for statistics
105
105
  end
106
106
  topItem.down_links.append(item)
107
-
108
- #if tmp = /^([a-zA-Z]+)[-]\d+/.match(item.id)
109
- # top_document.downlinkKey = tmp[1].upcase
110
- #end
111
107
  end
112
108
  end
109
+ # create treceability document
110
+ trx = Traceability.new top_document, bottom_document
111
+ @specifications.append trx
113
112
  end
114
113
 
115
114
  def link_protocol_to_spec(protocol, specification)
@@ -125,10 +124,14 @@ class Project
125
124
 
126
125
  unless topItem.coverage_links
127
126
  topItem.coverage_links = Array.new
127
+ top_document.items_with_coverage_number += 1 # for statistics
128
128
  end
129
129
  topItem.coverage_links.append(item)
130
130
  end
131
131
  end
132
+ # create coverage document
133
+ trx = Coverage.new top_document
134
+ @specifications.append trx
132
135
  end
133
136
 
134
137
  def render_all_specifications
@@ -142,6 +145,8 @@ class Project
142
145
 
143
146
  @specifications.each do |doc|
144
147
 
148
+ doc.to_console
149
+
145
150
  img_src_dir = pass + "/specifications/" + doc.id + "/img"
146
151
  img_dst_dir = pass + "/build/specifications/" + doc.id + "/img"
147
152
 
@@ -151,16 +156,14 @@ class Project
151
156
  FileUtils.copy_entry( img_src_dir, img_dst_dir )
152
157
  end
153
158
 
154
- HtmlRender.new( doc, nav_pane,
155
- @gem_root + "/lib/almirah/templates/page.html",
156
- "#{pass}/build/specifications/#{doc.id}/#{doc.id}.html" )
159
+ doc.to_html( nav_pane, "#{pass}/build/specifications/" )
157
160
  end
158
161
  end
159
162
 
160
163
  def render_all_protocols
161
164
 
162
165
  # create a sidebar first
163
- #nav_pane = NavigationPane.new(@specifications)
166
+ nav_pane = NavigationPane.new(@specifications)
164
167
 
165
168
  pass = @project_root_directory
166
169
 
@@ -178,9 +181,7 @@ class Project
178
181
  FileUtils.copy_entry( img_src_dir, img_dst_dir )
179
182
  end
180
183
 
181
- HtmlRender.new( doc, nil,
182
- @gem_root + "/lib/almirah/templates/page.html",
183
- "#{pass}/build/tests/protocols/#{doc.id}/#{doc.id}.html" )
184
+ doc.to_html( nav_pane, "#{pass}/build/tests/protocols/" )
184
185
  end
185
186
  end
186
187
  end
@@ -126,6 +126,13 @@
126
126
  a, a:link, a:visited {
127
127
  color: #169;
128
128
  text-decoration: none;
129
+ display: inline-block;
130
+ }
131
+ a:active {
132
+ color: #555;
133
+ background-color:#deb887;
134
+ text-decoration: none;
135
+ display: inline-block;
129
136
  }
130
137
  div.blockquote {
131
138
  display: block;
data/lib/almirah.rb CHANGED
@@ -18,11 +18,11 @@ class Almirah
18
18
 
19
19
  attr_accessor :project
20
20
 
21
- def initialize project_folder
22
- @project = Project.new project_folder, getGemRoot
21
+ def initialize(project_folder)
22
+ @project = Project.new project_folder
23
23
  end
24
24
 
25
- def getGemRoot
25
+ def getGemRoot()
26
26
  File.expand_path './..', File.dirname(__FILE__)
27
27
  end
28
28
 
@@ -30,7 +30,7 @@ class Almirah
30
30
  @project.specifications_and_results test_run
31
31
  end
32
32
 
33
- def default
33
+ def default()
34
34
  @project.specifications_and_protocols
35
35
  end
36
36
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: Almirah
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oleksandr Ivanov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-02-10 00:00:00.000000000 Z
11
+ date: 2024-02-17 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: The software part of the Almirah system
14
14
  email: oleksandr.ivanov.development@gmail.com
@@ -31,9 +31,10 @@ files:
31
31
  - lib/almirah/doc_items/markdown_table.rb
32
32
  - lib/almirah/doc_items/paragraph.rb
33
33
  - lib/almirah/doc_types/base_document.rb
34
+ - lib/almirah/doc_types/coverage.rb
34
35
  - lib/almirah/doc_types/protocol.rb
35
36
  - lib/almirah/doc_types/specification.rb
36
- - lib/almirah/html_render.rb
37
+ - lib/almirah/doc_types/traceability.rb
37
38
  - lib/almirah/navigation_pane.rb
38
39
  - lib/almirah/project.rb
39
40
  - lib/almirah/templates/page.html
@@ -1,54 +0,0 @@
1
-
2
- class HtmlRender
3
-
4
- attr_accessor :template
5
- attr_accessor :htmlRows
6
- attr_accessor :outputFile
7
- attr_accessor :document
8
- attr_accessor :nav_pane
9
-
10
- def initialize(document, nav_pane, template, outputFile)
11
-
12
- @template = template
13
- @outputFile = outputFile
14
- @htmlRows = Array.new
15
- @document = document
16
- @nav_pane = nav_pane
17
-
18
- self.render()
19
- self.saveRenderToFile()
20
- end
21
-
22
- def render()
23
- self.htmlRows.append('')
24
-
25
- self.document.items.each do |item|
26
- a = item.to_html
27
- self.htmlRows.append a
28
- end
29
- end
30
-
31
- def saveRenderToFile()
32
-
33
- file = File.open( self.template )
34
- file_data = file.readlines
35
- file.close
36
-
37
- file = File.open( self.outputFile, "w" )
38
- file_data.each do |s|
39
- if s.include?('{{CONTENT}}')
40
- self.htmlRows.each do |r|
41
- file.puts r
42
- end
43
- elsif s.include?('{{NAV_PANE}}')
44
- if @nav_pane
45
- file.puts self.nav_pane.to_html
46
- end
47
- else
48
- file.puts s
49
- end
50
- end
51
- file.close
52
- end
53
-
54
- end