module Stepmod module Utils class Bibdata DOCNUMBER = 10303 attr_accessor *%w( type doctype part title_en title_fr version language pub_year pub_date ) def initialize(document:) return nil unless document.is_a?(Nokogiri::XML::Element) # module, resource, application_protocol, business_object_model @type = document.name raise "UnknownFileError" unless %w(module resource application_protocol business_object_model).include?(@type) @doctype = document["status"] @part = document["part"] @title_en = document["title"] || document["name"].gsub("_", " ").capitalize.gsub("2d", "2D").gsub("3d", "3D") @title_fr = document["name.french"] @version = document["version"] @language = document["language"] # Some publication.year contains month... @pub_year = document["publication.year"].split("-").first @pub_date = document["publication.date"] # puts to_mn_adoc self # end def docid no_date = case doctype when "IS" "ISO #{DOCNUMBER}-#{part}" when "WD" "ISO/WD #{DOCNUMBER}-#{part}" when "CD" "ISO/CD #{DOCNUMBER}-#{part}" when "DIS" "ISO/DIS #{DOCNUMBER}-#{part}" when "FDIS" "ISO/FDIS #{DOCNUMBER}-#{part}" when "TS" "ISO/TS #{DOCNUMBER}-#{part}" when "CD-TS" "ISO/CD TS #{DOCNUMBER}-#{part}" else "UNKNOWN DOCTYPE: (#{doctype})" end if pub_year "#{no_date}:#{pub_year}" else no_date end end def part_title case part when [200..299] "Application protocol: #{title_en}" when [300..399] "Abstract test suite: #{title_en}" when [400..499] "Application module: #{title_en}" when [500..599] "Application interpreted construct: #{title_en}" when [1000..1799] "Application module: #{title_en}" else title_en end end def full_title "Industrial automation systems and integration -- Product data representation and exchange -- Part #{part}: #{part_title}" end def anchor docid.gsub("/", "-").gsub(" ", "_").gsub(":", "_") end def to_mn_adoc if title_en "* [[[#{anchor},#{docid}]]], _#{full_title}_" else "* [[[#{anchor},#{docid}]]]" end end end end end