Sha256: 5725db44aeccef49831c65046c09f8b61226aa8445e5dfff1afa8bc99abb7641

Contents?: true

Size: 1.53 KB

Versions: 4

Compression:

Stored size: 1.53 KB

Contents

require "isodoc"

module IsoDoc
  module Ietf
    class  Metadata < IsoDoc::Metadata
      TITLE_RFC = "//bibdata//title[@type='main' and @language='en']".freeze

      def title(isoxml, _out)
        t =  isoxml.at(ns(TITLE_RFC)) and
          set(:doctitle, t.text)
        t =  isoxml.at(ns(TITLE_RFC.sub(/main/, "abbrev"))) and
          set(:docabbrev, t.text)
        t =  isoxml.at(ns(TITLE_RFC.sub(/main/, "ascii"))) and
          set(:docascii, t.text)
      end

      def relaton_relations
        %w(included-in described-by derived-from instance)
        # = item describedby convertedfrom alternate
      end

      def keywords(isoxml, _out)
        ret = []
        isoxml.xpath(ns("//bibdata/keyword")).each do |kw|
          ret << kw.text
        end
        set(:keywords, ret)
      end

      def areas(isoxml, _out)
        ret = []
        isoxml.xpath(ns("//bibdata/ext/area")).each do |kw|
          ret << kw.text
        end
        set(:areas, ret)
      end

      def docid(isoxml, _out)
        dn = isoxml.at(ns("//bibdata/docnumber"))
        set(:docnumber, dn&.text&.sub(/^rfc-/, "")&.sub(/\.[a-z0-9]+$/i, ""))
      end

      def author(xml, _out)
        super
        wg(xml)
      end

       def wg(xml)
         workgroups = []
         xml.xpath(ns("//bibdata/ext/editorialgroup/workgroup")).each do |wg|
           workgroups << wg.text
        end
         set(:wg, workgroups)
      end

       def doctype(isoxml, _out)
         super
         set(:doctype, "Rfc") if get[:doctype].nil?
       end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
metanorma-ietf-2.0.11 lib/isodoc/ietf/metadata.rb
metanorma-ietf-2.0.10 lib/isodoc/ietf/metadata.rb
metanorma-ietf-2.0.9 lib/isodoc/ietf/metadata.rb
metanorma-ietf-2.0.8 lib/isodoc/ietf/metadata.rb