lib/asciidoctor/standoc/cleanup_reqt.rb in metanorma-standoc-1.11.4 vs lib/asciidoctor/standoc/cleanup_reqt.rb in metanorma-standoc-2.0.0
- old
+ new
@@ -1,111 +1,3 @@
-module Asciidoctor
- module Standoc
- module Cleanup
- def requirement_cleanup(xmldoc)
- requirement_metadata(xmldoc)
- requirement_inherit(xmldoc)
- requirement_descriptions(xmldoc)
- end
+require "asciidoctor/standoc/deprecated"
+require "metanorma/standoc/cleanup_reqt"
- REQRECPER = "//requirement | //recommendation | //permission".freeze
-
- def requirement_inherit(xmldoc)
- xmldoc.xpath(REQRECPER).each do |r|
- ins = requirement_inherit_insert(r)
- r.xpath("./*//inherit").each { |i| ins.previous = i }
- end
- end
-
- def requirement_inherit_insert(reqt)
- ins = reqt.at("./classification") || reqt.at(
- "./description | ./measurementtarget | ./specification | "\
- "./verification | ./import | ./description | ./component | "\
- "./requirement | ./recommendation | ./permission",
- ) and return ins
- requirement_inherit_insert1(reqt)
- end
-
- def requirement_inherit_insert1(reqt)
- if t = reqt.at("./title")
- t.next = " "
- t.next
- else
- if reqt.children.empty? then reqt.add_child(" ")
- else reqt.children.first.previous = " "
- end
- reqt.children.first
- end
- end
-
- def requirement_descriptions(xmldoc)
- xmldoc.xpath(REQRECPER).each do |r|
- r.xpath(".//p[not(./*)][normalize-space(.)='']").each(&:remove)
- r.children.each do |e|
- requirement_description_wrap(r, e)
- end
- requirement_description_cleanup1(r)
- end
- end
-
- def requirement_description_wrap(reqt, text)
- return if (text.element? && (reqt_subpart(text.name) ||
- %w(requirement recommendation
- permission).include?(text.name))) ||
- (text.text.strip.empty? && !text.at(".//xref | .//eref | .//link"))
-
- t = Nokogiri::XML::Element.new("description", reqt)
- text.before(t)
- t.children = text.remove
- end
-
- def requirement_description_cleanup1(reqt)
- while d = reqt.at("./description[following-sibling::*[1]"\
- "[self::description]]")
- n = d.next.remove
- d << n.children
- end
- reqt.xpath("./description[normalize-space(.)='']").each do |r|
- r.replace("\n")
- end
- end
-
- def requirement_metadata(xmldoc)
- xmldoc.xpath(REQRECPER).each do |r|
- dl = r&.at("./dl[@metadata = 'true']")&.remove or next
- requirement_metadata1(r, dl, r.at("./title"))
- end
- end
-
- def requirement_metadata1_tags
- %w(label subject inherit)
- end
-
- def requirement_metadata1(reqt, dlist, ins)
- unless ins
- reqt.children.first.previous = " "
- ins = reqt.children.first
- end
- %w(obligation model type).each do |a|
- dl_to_attrs(reqt, dlist, a)
- end
- requirement_metadata1_tags.each do |a|
- ins = dl_to_elems(ins, reqt, dlist, a)
- end
- reqt_dl_to_classif(ins, reqt, dlist)
- end
-
- def reqt_dl_to_classif(ins, reqt, dlist)
- if a = reqt.at("./classification[last()]") then ins = a end
- dlist.xpath("./dt[text()='classification']").each do |e|
- val = e.at("./following::dd/p") || e.at("./following::dd")
- req_classif_parse(val.text).each do |r|
- ins.next = "<classification><tag>#{r[0]}</tag>"\
- "<value>#{r[1]}</value></classification>"
- ins = ins.next
- end
- end
- ins
- end
- end
- end
-end