Class: Datacite::Mapping::Identifier
- Inherits:
-
Object
- Object
- Datacite::Mapping::Identifier
- Includes:
- XML::Mapping
- Defined in:
- lib/datacite/mapping/identifier.rb
Overview
The persistent identifier that identifies the resource.
Instance Attribute Summary collapse
-
#identifier_type ⇒ String
The identifier type (always 'DOI').
-
#value ⇒ String
The identifier value.
Class Method Summary collapse
-
.from_doi(doi_string)
Converts a string DOI value to an
Identifier.
Instance Method Summary collapse
-
#initialize(value:) ⇒ Identifier
constructor
Initializes a new Identifier.
Constructor Details
#initialize(value:) ⇒ Identifier
Initializes a new Datacite::Mapping::Identifier
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_type ⇒ String
Returns 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 |
#value ⇒ String
Returns 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.
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 |