Sha256: 6c6a23684fd0f1f0a94dc0e30169de095150950411ddea80338ae9c5fc702ff7

Contents?: true

Size: 1.93 KB

Versions: 1

Compression:

Stored size: 1.93 KB

Contents

module Asciidoctor
  module BSI
    class Converter < ISO::Converter
      def org_abbrev
        super.merge("British Standards Institute" => "BSI")
      end

      def metadata_author(node, xml)
        publishers = node.attr("publisher") || "BSI"
        csv_split(publishers)&.each do |p|
          xml.contributor do |c|
            c.role **{ type: "author" }
            c.organization do |a|
              organization(a, p, node, !node.attr("publisher"))
            end
          end
        end
      end

      def metadata_publisher(node, xml)
        publishers = node.attr("publisher") || "BSI"
        csv_split(publishers)&.each do |p|
          xml.contributor do |c|
            c.role **{ type: "publisher" }
            c.organization do |a|
              organization(a, p, node, !node.attr("publisher"))
            end
          end
        end
      end

      def metadata_copyright(node, xml)
        pub = node.attr("copyright-holder") || node.attr("publisher") || "BSI"
        csv_split(pub)&.each do |p|
          xml.copyright do |c|
            c.from (node.attr("copyright-year") || Date.today.year)
            c.owner do |owner|
              owner.organization do |o|
                organization(o, p, node, !node.attr("copyright-holder") ||
                             node.attr("publisher"))
              end
            end
          end
        end
      end

      def iso_id(node, xml)
        return unless node.attr("docnumber")

        part = node&.attr("partnumber")
        dn = add_id_parts(node.attr("docnumber"), part, nil)
        dn = id_stage_prefix(dn, node, false)
        xml.docidentifier dn, **attr_code(type: "BS")
      end

      def metadata_doctype(node, xml)
        xml.doctype doctype(node)
      end

      def relaton_relations
        super + %w(obsoletes adopted-from)
      end

      # TODO: not yet implemented prefixes for subsectors explicitly, Rules for Structure Annex F
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
metanorma-bsi-0.0.1 lib/asciidoctor/bsi/front.rb