Sha256: dfaa15786a2ce680533b1376f8d31d55fc3a1a5d77eb85c7eb5df966e623299c

Contents?: true

Size: 1.87 KB

Versions: 9

Compression:

Stored size: 1.87 KB

Contents

module RelatonIsoBib
  # Document structured identifier.
  class StructuredIdentifier
    # @return [Integer, NilClass]
    attr_reader :tc_document_number

    # @return [String]
    attr_reader :project_number

    # @return [Integer, NilClass]
    attr_reader :part

    # @return [Integer, NilClass]
    attr_reader :subpart

    # @return [String, NilClass]
    attr_reader :type

    # @param tc_document_number [Integer, NilClass]
    # @param project_number [String]
    # @param part [String, NilClass]
    # @param subpart [String, NilClass]
    # @param type [String, NilClass]
    def initialize(**args)
      @tc_document_number = args[:tc_document_number]
      @project_number = args[:project_number]
      @part = args[:part]
      @subpart = args[:subpart]
      @prefix = args[:prefix]
      @type = args[:type]
    end

    # in docid manipulations, assume ISO as the default: id-part:year
    def remove_part
      @part_number = nil
      @subpart_number = nil
      case @type
      when "Chinese Standard" then @project_number = @project_number.sub(/\.\d+/, "")
      else
        @project_number = @project_number.sub(/-\d+/, "")
      end
    end

    def remove_date
      case @type
      when "Chinese Standard" then @project_number = @project_number.sub(/-[12]\d\d\d/, "")
      else
        @project_number = @project_number.sub(/:[12]\d\d\d/, "")
      end
    end

    def all_parts
      @project_number = @project_number + " (all parts)"
    end

    def id
      project_number
    end

    # @param builder [Nokogiri::XML::Builder]
    def to_xml(builder)
      xml = builder.structuredidentifier do
        pn = builder.send "project-number", project_number
        pn[:part] = part if part
        pn[:subpart] = subpart if subpart
        builder.send "tc-document-number", tc_document_number if tc_document_number
      end
      xml[:type] = type if type
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
relaton-iso-bib-0.3.2 lib/relaton_iso_bib/structured_identifier.rb
relaton-iso-bib-0.3.1 lib/relaton_iso_bib/structured_identifier.rb
relaton-iso-bib-0.3.0 lib/relaton_iso_bib/structured_identifier.rb
relaton-iso-bib-0.2.4 lib/relaton_iso_bib/structured_identifier.rb
relaton-iso-bib-0.2.3 lib/relaton_iso_bib/structured_identifier.rb
relaton-iso-bib-0.2.2 lib/relaton_iso_bib/structured_identifier.rb
relaton-iso-bib-0.2.1 lib/relaton_iso_bib/structured_identifier.rb
relaton-iso-bib-0.2.0 lib/relaton_iso_bib/structured_identifier.rb
relaton-iso-bib-0.1.0 lib/relaton_iso_bib/structured_identifier.rb