[Almirah.Code] : controlled_paragraph.rb ¶
1.1 References ¶
| # | | UL | DL | COV | DR |
| SC-AAAA |
Implementa a controlled paragraph as a subclass of the DocItem |
SRS-001 |
|
|
|
1.2 Source Code ¶
require_relative 'paragraph'
# <REQ> Implementa a controlled paragraph as a subclass of the DocItem >[SRS-001] </REQ>
class ControlledParagraph < Paragraph
attr_accessor :id, :up_link_ids, :down_links, :coverage_links, :source_code_links, :decision_record_links
def initialize(doc, text, id)
super(doc, text)
@parent_heading = doc.headings[-1]
@id = id
@up_link_ids = nil
@down_links = nil
@coverage_links = nil
@source_code_links = nil
@decision_record_links = nil
end
def to_html
s = ''
unless @@html_table_render_in_progress
s += "<table class=\"controlled\">\n"
s += "\t<thead> <th>#</th> <th></th> <th title=\"Up-links\">UL</th> <th title=\"Down-links\">DL</th> \
<th title=\"Test Coverage\">COV</th> <th title=\"Decision Record\">DR</th> </thead>\n"
@@html_table_render_in_progress = true # rubocop:disable Style/ClassVars
end
f_text = format_string(@text)
s += "\t<tr>\n"
s += "\t\t<td class=\"item_id\"> \
<a name=\"#{@id}\" id=\"#{@id}\" href=\"##{@id}\" title=\"Paragraph ID\">#{@id}</a></td>\n"
s += "\t\t<td class=\"item_text\">#{f_text}</td>\n"
if @up_link_ids
if @up_link_ids.length == 1
if tmp = /^([a-zA-Z]+)-\d+/.match(@up_link_ids[0])
up_link_doc_name = tmp[1].downcase
end
s += "\t\t<td class=\"item_id\">\
<a href=\"#{parent_doc.specifications_path}#{up_link_doc_name}/#{up_link_doc_name}.html##{@up_link_ids[0]}\" \
class=\"external\" title=\"Linked to\">#{@up_link_ids[0]}</a></td>\n"
else
s += "\t\t<td class=\"item_id\">"
s += "<div id=\"UL_#{@id}\" style=\"display: block;\">"
s += "<a href=\"#\" onclick=\"upLink_OnClick(this.parentElement); return false;\" \
class=\"external\" title=\"Number of up-links\">#{@up_link_ids.length}</a>"
s += '</div>'
s += "<div id=\"ULS_#{@id}\" style=\"display: none;\">"
@up_link_ids.each do |lnk|
if tmp = /^([a-zA-Z]+)-\d+/.match(lnk)
up_link_doc_name = tmp[1].downcase
end
s += "\t\t\t<a href=\"#{parent_doc.specifications_path}#{up_link_doc_name}/#{up_link_doc_name}.html##{lnk}\" \
class=\"external\" title=\"Linked to\">#{lnk}</a>\n<br>"
end
s += '</div>'
s += "</td>\n"
end
else
s += "\t\t<td class=\"item_id\"></td>\n"
end
if @down_links
if tmp = /^([a-zA-Z]+)-\d+/.match(@down_links[0].id) # guessing that all the links refer to one document
down_link_doc_name = tmp[1].downcase
end
if @down_links.length == 1
s += "\t\t<td class=\"item_id\">\
<a href=\"./../#{down_link_doc_name}/#{down_link_doc_name}.html##{@down_links[0].id}\" \
class=\"external\" title=\"Referenced in\">#{@down_links[0].id}</a></td>\n"
else
s += "\t\t<td class=\"item_id\">"
s += "<div id=\"DL_#{@id}\" style=\"display: block;\">"
s += "<a href=\"#\" onclick=\"downlink_OnClick(this.parentElement); return false;\" \
class=\"external\" title=\"Number of references\">#{@down_links.length}</a>"
s += '</div>'
s += "<div id=\"DLS_#{@id}\" style=\"display: none;\">"
@down_links.each do |lnk|
s += "\t\t\t<a href=\"./../#{lnk.parent_doc.id}/#{lnk.parent_doc.id}.html##{lnk.id}\" \
class=\"external\" title=\"Referenced in\">#{lnk.id}</a>\n<br>"
end
s += '</div>'
s += "</td>\n"
end
else
s += "\t\t<td class=\"item_id\"></td>\n"
end
if @coverage_links
if tmp = /^(.+)[.]\d+/.match(@coverage_links[0].id) # guessing that all the links refer to one document
cov_link_doc_name = tmp[1].downcase
end
if @coverage_links.length == 1
s += "\t\t<td class=\"item_id\">\
<a href=\"./../../tests/protocols/#{cov_link_doc_name}/#{cov_link_doc_name}.html\" \
class=\"external\" title=\"Number of verification steps\">#{@coverage_links[0].id}</a></td>\n"
else
s += "\t\t<td class=\"item_id\">"
s += "<div id=\"COV_#{@id}\" style=\"display: block;\">"
s += "<a href=\"#\" onclick=\"coverageLink_OnClick(this.parentElement); return false;\" \
class=\"external\" title=\"Number of verification steps\">#{@coverage_links.length}</a>"
s += '</div>'
s += "<div id=\"COVS_#{@id}\" style=\"display: none;\">"
@coverage_links.each do |lnk|
s += "\t\t\t<a href=\"./../../tests/protocols/#{lnk.parent_doc.id}/#{lnk.parent_doc.id}.html##{lnk.id}\" \
class=\"external\" title=\"Covered in\">#{lnk.id}</a>\n<br>"
end
s += '</div>'
s += "</td>\n"
end
else
s += "\t\t<td class=\"item_id\"></td>\n"
end
if @decision_record_links
if @decision_record_links.length == 1
dr_doc = @decision_record_links[0].parent_doc
s += "\t\t<td class=\"item_id\">\
<a href=\"./../../decisions/#{dr_doc.html_rel_path}\" \
class=\"external\" title=\"Decision Record\">#{dr_doc.id.upcase}</a></td>\n"
else
s += "\t\t<td class=\"item_id\">"
s += "<div id=\"DR_#{@id}\" style=\"display: block;\">"
s += "<a href=\"#\" onclick=\"decisionLink_OnClick(this.parentElement); return false;\" \
class=\"external\" title=\"Number of decision records\">#{@decision_record_links.length}</a>"
s += '</div>'
s += "<div id=\"DRS_#{@id}\" style=\"display: none;\">"
@decision_record_links.each do |lnk|
dr_doc = lnk.parent_doc
s += "\t\t\t<a href=\"./../../decisions/#{dr_doc.html_rel_path}\" \
class=\"external\" title=\"Referenced in\">#{dr_doc.id.upcase}</a>\n<br>"
end
s += '</div>'
s += "</td>\n"
end
else
s += "\t\t<td class=\"item_id\"></td>\n"
end
s += "\t</tr>\n"
s
end
end