module Metanorma
class Requirements
class Modspec < Default
def requirement_type_cleanup(reqt)
reqt["type"] = case reqt["type"]
when "requirement", "recommendation", "permission"
"general"
when "requirements_class" then "class"
when "conformance_test" then "verification"
when "conformance_class" then "conformanceclass"
when "abstract_test" then "abstracttest"
else reqt["type"]
end
end
def requirement_metadata_component_tags
%w(test-purpose test-method test-method-type conditions part description
reference step requirement permission recommendation)
end
def requirement_metadata1(reqt, dlist, ins)
ins1 = super
dlist.xpath("./dt").each do |e|
tag = e&.text&.gsub(/ /, "-")&.downcase
next unless requirement_metadata_component_tags.include? tag
ins1.next = requirement_metadata1_component(e, tag)
ins1 = ins1.next
end
end
def requirement_metadata1_component(term, tag)
val = term.at("./following::dd")
val.name = tag
val.xpath("./dl").each do |d|
requirement_metadata1(val, d, d)
d.remove
end
if REQS.include?(term.text) && !val.text.empty?
val.children = "
#{c.children.to_xml}
" end end end end end