Sha256: 278cdd7f1098433b47ab7bcaff2e9ddde27f3971b677555ed841d1a54dcd5e8f

Contents?: true

Size: 1.15 KB

Versions: 10

Compression:

Stored size: 1.15 KB

Contents

require "nokogiri"

module RelatonGb
  class XMLParser < RelatonIsoBib::XMLParser
    class << self
      private

      # override RelatonBib::BibliographicItem.bib_item method
      # @param item_hash [Hash]
      # @return [RelatonGb::GbBibliographicItem]
      def bib_item(item_hash)
        GbBibliographicItem.new item_hash
      end

      def item_data(gbitem)
        data = super
        data[:committee] = fetch_committee gbitem
        data[:gbtype] = fetch_gbtype gbitem
        data[:ccs] = fetch_ccs gbitem
        data[:plannumber] = gbitem.at("./plannumber")&.text
        data
      end

      def fetch_committee(doc)
        committee = doc.at "./ext/gbcommittee"
        return nil unless committee

        { type: committee[:type], name: committee.text }
      end

      def fetch_ccs(doc)
        doc.xpath("./ext/ccs/code").map &:text
      end

      def fetch_gbtype(doc)
        gbtype = doc.at "./ext/gbtype"
        {
          scope: gbtype&.at("gbscope")&.text,
          prefix: gbtype&.at("gbprefix")&.text,
          mandate: gbtype&.at("gbmandate")&.text,
          topic: gbtype&.at("gbtopic")&.text,
        }
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 2 rubygems

Version Path
relaton-gb-1.7.0 lib/relaton_gb/xml_parser.rb
relaton-gb-1.6.0 lib/relaton_gb/xml_parser.rb
relaton-gb-1.6.pre1 lib/relaton_gb/xml_parser.rb
relaton-gb-1.5.0 lib/relaton_gb/xml_parser.rb
relaton-gb-1.5.pre lib/relaton_gb/xml_parser.rb
relaton-gb-1.4.0 lib/relaton_gb/xml_parser.rb
relaton-gb-1.3.0 lib/relaton_gb/xml_parser.rb
metanorma-cli-1.3.4 gems/ruby/2.6.0/gems/relaton-gb-1.2.0/lib/relaton_gb/xml_parser.rb
metanorma-cli-1.3.3.1 gems/ruby/2.6.0/gems/relaton-gb-1.2.0/lib/relaton_gb/xml_parser.rb
relaton-gb-1.2.0 lib/relaton_gb/xml_parser.rb