Sha256: 04baf723d6d73d1c197ec9c5affc4f002b78b7a2aebfc38d366cf5ca84dc88b4

Contents?: true

Size: 1.98 KB

Versions: 9

Compression:

Stored size: 1.98 KB

Contents

module Asciidoctor
  module ITU
    class Converter < Standoc::Converter
      def metadata_id(node, xml)
        provisional_id(node, xml)
        itu_id(node, xml)
        recommendation_id(node, xml)
      end

      def provisional_id(node, xml)
        return unless node.attr("provisional-name")

        xml.docidentifier **{ type: "ITU-provisional" } do |i|
          i << node.attr("provisional-name")
        end
      end

      ITULANG = { "en" => "E", "fr" => "F", "ar" => "A", "es" => "S",
                  "zh" => "C", "ru" => "R" }.freeze

      def itu_id1(node, lang)
        bureau = node.attr("bureau") || "T"
        id = if doctype(node) == "service-publication"
               @i18n.annex_to_itu_ob_abbrev.sub(/%/,
                                                node.attr("docnumber"))
             else
               "ITU-#{bureau} #{node.attr('docnumber')}"
             end
        id + (lang ? "-#{ITULANG[@lang]}" : "")
      end

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

        xml.docidentifier **{ type: "ITU" } do |i|
          i << itu_id1(node, false)
        end
        xml.docidentifier **{ type: "ITU-lang" } do |i|
          i << itu_id1(node, true)
        end
        xml.docnumber { |i| i << node.attr("docnumber") }
      end

      def recommendation_id(node, xml)
        return unless node.attr("recommendationnumber")

        node.attr("recommendationnumber").split("/").each do |s|
          xml.docidentifier **{ type: "ITU-Recommendation" } do |i|
            i << s
          end
        end
      end

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

        xml.structuredidentifier do |i|
          i.bureau node.attr("bureau") || "T"
          i.docnumber node.attr("docnumber")
          a = node.attr("annexid") and i.annexid a
          a = node.attr("amendment-number") and i.amendment a
          a = node.attr("corrigendum-number") and i.corrigendum a
        end
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
metanorma-itu-1.4.5 lib/asciidoctor/itu/front_id.rb
metanorma-itu-1.4.4 lib/asciidoctor/itu/front_id.rb
metanorma-itu-1.4.3 lib/asciidoctor/itu/front_id.rb
metanorma-itu-1.4.2 lib/asciidoctor/itu/front_id.rb
metanorma-itu-1.4.1 lib/asciidoctor/itu/front_id.rb
metanorma-itu-1.4.0.1 lib/asciidoctor/itu/front_id.rb
metanorma-itu-1.4.0 lib/asciidoctor/itu/front_id.rb
metanorma-itu-1.3.13 lib/asciidoctor/itu/front_id.rb
metanorma-itu-1.3.12 lib/asciidoctor/itu/front_id.rb