require "date"
require "nokogiri"
require "htmlentities"
require "json"
require "pathname"
require "open-uri"
require "pp"
module Asciidoctor
module ISO
module Front
def metadata_id(node, xml)
part, subpart = node&.attr("partnumber")&.split(/-/)
xml.docidentifier do |i|
i.project_number node.attr("docnumber"),
**attr_code(part: part, subpart: subpart)
if node.attr("tc-docnumber")
i.tc_document_number node.attr("tc-docnumber")
end
end
end
def metadata_version(node, xml)
xml.version do |v|
v.edition node.attr("edition") if node.attr("edition")
v.revision_date node.attr("revdate") if node.attr("revdate")
v.draft node.attr("draft") if node.attr("draft")
end
end
def committee_component(compname, node, out)
out.send compname.gsub(/-/, "_"), node.attr(compname),
**attr_code(number: node.attr("#{compname}-number"),
type: node.attr("#{compname}-type"))
end
def metadata_author(_node, xml)
xml.contributor do |c|
c.role **{ type: "author" }
c.organization do |a|
a.name "ISO"
end
end
end
def metadata_publisher(node, xml)
publishers = node.attr("publisher") || "ISO"
publishers.split(/,[ ]?/).each do |p|
xml.contributor do |c|
c.role **{ type: "publisher" }
c.organization do |a|
a.name p
end
end
end
end
def metadata_copyright(node, xml)
from = node.attr("copyright-year") || Date.today.year
xml.copyright do |c|
c.from from
c.owner do |owner|
owner.organization do |o|
o.name "ISO"
end
end
end
end
def metadata_status(node, xml)
xml.status do |s|
s.stage (node.attr("docstage") || "60")
s.substage (node.attr("docsubstage") || "60")
end
end
def metadata_committee(node, xml)
xml.editorialgroup do |a|
committee_component("technical-committee", node, a)
committee_component("subcommittee", node, a)
committee_component("workgroup", node, a)
node.attr("secretariat") && a.secretariat(node.attr("secretariat"))
end
end
def metadata(node, xml)
title node, xml
metadata_id(node, xml)
metadata_author(node, xml)
metadata_publisher(node, xml)
xml.language node.attr("language")
xml.script (node.attr("script") || "Latn")
metadata_status(node, xml)
metadata_copyright(node, xml)
metadata_committee(node, xml)
end
def title_intro(node, t, lang, at)
return unless node.attr("title-intro-#{lang}")
t.title_intro(**attr_code(at)) do |t1|
t1 << node.attr("title-intro-#{lang}")
end
end
def title_main(node, t, lang, at)
t.title_main **attr_code(at) do |t1|
t1 << node.attr("title-main-#{lang}")
end
end
def title_part(node, t, lang, at)
return unless node.attr("title-part-#{lang}")
t.title_part(**attr_code(at)) do |t1|
t1 << node.attr("title-part-#{lang}")
end
end
def title(node, xml)
["en", "fr"].each do |lang|
xml.title do |t|
at = { language: lang, format: "text/plain" }
title_intro(node, t, lang, at)
title_main(node, t, lang, at)
title_part(node, t, lang, at)
end
end
end
end
end
end