Sha256: c55f26888c81273fd1291a5f6cfa8ba4f54d08938a0e4c49f7ff2a1085dd9fb0

Contents?: true

Size: 1.97 KB

Versions: 31

Compression:

Stored size: 1.97 KB

Contents

module Metanorma
  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

31 entries across 31 versions & 1 rubygems

Version Path
metanorma-itu-2.2.4 lib/metanorma/itu/front_id.rb
metanorma-itu-2.2.3 lib/metanorma/itu/front_id.rb
metanorma-itu-2.2.2 lib/metanorma/itu/front_id.rb
metanorma-itu-2.2.1 lib/metanorma/itu/front_id.rb
metanorma-itu-2.2.0 lib/metanorma/itu/front_id.rb
metanorma-itu-2.1.13 lib/metanorma/itu/front_id.rb
metanorma-itu-2.1.12 lib/metanorma/itu/front_id.rb
metanorma-itu-2.1.11 lib/metanorma/itu/front_id.rb
metanorma-itu-2.1.10 lib/metanorma/itu/front_id.rb
metanorma-itu-2.1.9 lib/metanorma/itu/front_id.rb
metanorma-itu-2.1.8.1 lib/metanorma/itu/front_id.rb
metanorma-itu-2.1.8 lib/metanorma/itu/front_id.rb
metanorma-itu-2.1.7 lib/metanorma/itu/front_id.rb
metanorma-itu-2.1.6 lib/metanorma/itu/front_id.rb
metanorma-itu-2.1.5.1 lib/metanorma/itu/front_id.rb
metanorma-itu-2.1.5 lib/metanorma/itu/front_id.rb
metanorma-itu-2.1.4 lib/metanorma/itu/front_id.rb
metanorma-itu-2.1.3 lib/metanorma/itu/front_id.rb
metanorma-itu-2.1.2 lib/metanorma/itu/front_id.rb
metanorma-itu-2.1.1 lib/metanorma/itu/front_id.rb