Class: RelatonBib::StructuredIdentifier

Inherits:
Object
  • Object
show all
Includes:
RelatonBib
Defined in:
lib/relaton_bib/structured_identifier.rb

Constant Summary

Constants included from RelatonBib

VERSION

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from RelatonBib

parse_date

Constructor Details

#initialize(docnumber:, **args) ⇒ StructuredIdentifier

Returns a new instance of StructuredIdentifier.

Parameters:

  • type (String, NilClass)
  • agency (Array<String>)
  • partnumber (String, NilClass)
  • edition (String, NilClass)
  • version (String, NilClass)
  • supplementtype (String, NilClass)
  • supplementnumber (String, NilClass)
  • language (String, NilClass)
  • year (String, NilClass)


84
85
86
87
88
89
90
91
92
93
94
95
96
# File 'lib/relaton_bib/structured_identifier.rb', line 84

def initialize(docnumber:, **args)
  @type = args[:type]
  @agency = args[:agency]
  @klass = args[:class]
  @docnumber = docnumber
  @partnumber = args[:partnumber]
  @edition = args[:edition]
  @version = args[:version]
  @supplementtype = args[:supplementtype]
  @supplementnumber = args[:supplementnumber]
  @language = args[:language]
  @year = args[:year]
end

Instance Attribute Details

#agencyArray<String> (readonly)

Returns:



65
66
67
# File 'lib/relaton_bib/structured_identifier.rb', line 65

def agency
  @agency
end

#docnumberString (readonly)

Returns:

  • (String)


62
63
64
# File 'lib/relaton_bib/structured_identifier.rb', line 62

def docnumber
  @docnumber
end

#editionString, NilClass (readonly)

Returns:

  • (String, NilClass)


68
69
70
# File 'lib/relaton_bib/structured_identifier.rb', line 68

def edition
  @edition
end

#klassString, NilClass (readonly)

Returns:

  • (String, NilClass)


68
69
70
# File 'lib/relaton_bib/structured_identifier.rb', line 68

def klass
  @klass
end

#languageString, NilClass (readonly)

Returns:

  • (String, NilClass)


68
69
70
# File 'lib/relaton_bib/structured_identifier.rb', line 68

def language
  @language
end

#partnumberString, NilClass (readonly)

Returns:

  • (String, NilClass)


68
69
70
# File 'lib/relaton_bib/structured_identifier.rb', line 68

def partnumber
  @partnumber
end

#supplementnumberString, NilClass (readonly)

Returns:

  • (String, NilClass)


68
69
70
# File 'lib/relaton_bib/structured_identifier.rb', line 68

def supplementnumber
  @supplementnumber
end

#supplementtypeString, NilClass (readonly)

Returns:

  • (String, NilClass)


68
69
70
# File 'lib/relaton_bib/structured_identifier.rb', line 68

def supplementtype
  @supplementtype
end

#typeString, NilClass (readonly)

Returns:

  • (String, NilClass)


68
69
70
# File 'lib/relaton_bib/structured_identifier.rb', line 68

def type
  @type
end

#versionString, NilClass (readonly)

Returns:

  • (String, NilClass)


68
69
70
# File 'lib/relaton_bib/structured_identifier.rb', line 68

def version
  @version
end

#yearString, NilClass (readonly)

Returns:

  • (String, NilClass)


68
69
70
# File 'lib/relaton_bib/structured_identifier.rb', line 68

def year
  @year
end

Instance Method Details

#all_partsObject



168
169
170
# File 'lib/relaton_bib/structured_identifier.rb', line 168

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

#remove_dateObject



153
154
155
156
157
158
159
160
# File 'lib/relaton_bib/structured_identifier.rb', line 153

def remove_date
  if @type == "Chinese Standard"
    @docnumber.sub!(/-[12]\d\d\d/, "")
  else
    @docnumber.sub!(/:[12]\d\d\d/, "")
  end
  @year = nil
end

#remove_partObject

in docid manipulations, assume ISO as the default: id-part:year



163
164
165
166
# File 'lib/relaton_bib/structured_identifier.rb', line 163

def remove_part
  @partnumber = nil
  @docnumber = @docnumber.sub(/-\d+/, "")
end

#to_asciibib(prefix) ⇒ String

Parameters:

  • prefix (String)

Returns:

  • (String)


136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
# File 'lib/relaton_bib/structured_identifier.rb', line 136

def to_asciibib(prefix) # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength,Metrics/PerceivedComplexity
  out = "#{prefix}.docnumber:: #{docnumber}\n"
  agency.each { |a| out += "#{prefix}.agency:: #{a}\n" }
  out += "#{prefix}.type:: #{type}\n" if type
  out += "#{prefix}.class:: #{klass}\n" if klass
  out += "#{prefix}.partnumber:: #{partnumber}\n" if partnumber
  out += "#{prefix}.edition:: #{edition}\n" if edition
  out += "#{prefix}.version:: #{version}\n" if version
  out += "#{prefix}.supplementtype:: #{supplementtype}\n" if supplementtype
  if supplementnumber
    out += "#{prefix}.supplementnumber:: #{supplementnumber}\n"
  end
  out += "#{prefix}.language:: #{language}\n" if language
  out += "#{prefix}.year:: #{year}\n" if year
  out
end

#to_hashHash

Returns:

  • (Hash)


118
119
120
121
122
123
124
125
126
127
128
129
130
131
# File 'lib/relaton_bib/structured_identifier.rb', line 118

def to_hash
  hash = { "docnumber" => docnumber }
  hash["type"] = type if type
  hash["agency"] = single_element_array agency if agency&.any?
  hash["class"] = klass if klass
  hash["partnumber"] = partnumber if partnumber
  hash["edition"] = edition if edition
  hash["version"] = version if version
  hash["supplementtype"] = supplementtype if supplementtype
  hash["supplementnumber"] = supplementnumber if supplementnumber
  hash["language"] = language if language
  hash["year"] = year if year
  hash
end

#to_xml(builder) ⇒ Object

Parameters:

  • builder (Nokogiri::XML::Builder)


101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
# File 'lib/relaton_bib/structured_identifier.rb', line 101

def to_xml(builder)
  xml = builder.structuredidentifier do |b|
    agency&.each { |a| b.agency a }
    b.class_ klass if klass
    b.docnumber docnumber
    b.partnumber partnumber if partnumber
    b.edition edition if edition
    b.version version if version
    b.supplementtype supplementtype if supplementtype
    b.supplementnumber supplementnumber if supplementnumber
    b.language language if language
    b.year year if year
  end
  xml[:type] = type if type
end