Class: Datacite::Mapping::Identifier

Inherits:
Object
  • Object
show all
Includes:
XML::Mapping
Defined in:
lib/datacite/mapping/identifier.rb

Overview

The persistent identifier that identifies the resource.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(value:) ⇒ Identifier

Initializes a new Datacite::Mapping::Identifier

Parameters:

  • value (String)

    the identifier value. Must be a valid DOI value (10.registrant code/suffix)



19
20
21
22
# File 'lib/datacite/mapping/identifier.rb', line 19

def initialize(value:)
  self.identifier_type = 'DOI'
  self.value = value
end

Instance Attribute Details

#identifier_typeString

Returns the identifier type (always 'DOI').

Returns:

  • (String)

    the identifier type (always 'DOI')



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/datacite/mapping/identifier.rb', line 13

class Identifier
  include XML::Mapping

  # Initializes a new {Identifier}
  # @param value [String]
  #   the identifier value. Must be a valid DOI value (`10.`_registrant code_`/`_suffix_)
  def initialize(value:)
    self.identifier_type = 'DOI'
    self.value = value
  end

  def value=(v)
    fail ArgumentError, "Identifier value '#{v}' is not a valid DOI" unless v.match(DOI_PATTERN)
    @value = v
  end

  # Sets the identifier type. Should only be called by the XML mapping engine.
  # @param v [String]
  #   the identifier type (always 'DOI')
  def identifier_type=(v)
    fail ArgumentError, "Identifier type '#{v}' must be 'DOI'" unless 'DOI' == v
    @identifier_type = v
  end

  # Converts a string DOI value to an `Identifier`.
  # @param doi_string [String]
  def self.from_doi(doi_string)
    match = doi_string.match(DOI_PATTERN)
    fail ArgumentError, "'#{doi_string}' does not appear to contain a valid DOI" unless match
    Identifier.new(value: match[0])
  end

  text_node :identifier_type, '@identifierType'
  text_node :value, 'text()'
end

#valueString

Returns the identifier value. Must be a valid DOI value (10.registrant code/suffix).

Returns:

  • (String)

    the identifier value. Must be a valid DOI value (10.registrant code/suffix)



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/datacite/mapping/identifier.rb', line 13

class Identifier
  include XML::Mapping

  # Initializes a new {Identifier}
  # @param value [String]
  #   the identifier value. Must be a valid DOI value (`10.`_registrant code_`/`_suffix_)
  def initialize(value:)
    self.identifier_type = 'DOI'
    self.value = value
  end

  def value=(v)
    fail ArgumentError, "Identifier value '#{v}' is not a valid DOI" unless v.match(DOI_PATTERN)
    @value = v
  end

  # Sets the identifier type. Should only be called by the XML mapping engine.
  # @param v [String]
  #   the identifier type (always 'DOI')
  def identifier_type=(v)
    fail ArgumentError, "Identifier type '#{v}' must be 'DOI'" unless 'DOI' == v
    @identifier_type = v
  end

  # Converts a string DOI value to an `Identifier`.
  # @param doi_string [String]
  def self.from_doi(doi_string)
    match = doi_string.match(DOI_PATTERN)
    fail ArgumentError, "'#{doi_string}' does not appear to contain a valid DOI" unless match
    Identifier.new(value: match[0])
  end

  text_node :identifier_type, '@identifierType'
  text_node :value, 'text()'
end

Class Method Details

.from_doi(doi_string)

Converts a string DOI value to an Identifier.

Parameters:

  • doi_string (String)


39
40
41
42
43
# File 'lib/datacite/mapping/identifier.rb', line 39

def self.from_doi(doi_string)
  match = doi_string.match(DOI_PATTERN)
  fail ArgumentError, "'#{doi_string}' does not appear to contain a valid DOI" unless match
  Identifier.new(value: match[0])
end