Class: Pubid::Iso::Identifier
- Inherits:
-
Pubid::Identifier
- Object
- Lutaml::Model::Serializable
- Pubid::Identifier
- Pubid::Iso::Identifier
- Defined in:
- lib/pubid/iso/identifier.rb
Direct Known Subclasses
Constant Summary collapse
- ISO_TYPE_MAP =
Polymorphic type map for lutaml::Model key_value serialization Maps polymorphic_name → class name for deserialization Validated by spec to stay in sync with Scheme.identifiers
{ "pubid:iso:international-standard" => "Pubid::Iso::Identifiers::InternationalStandard", "pubid:iso:international-standardized-profile" => "Pubid::Iso::Identifiers::InternationalStandardizedProfile", "pubid:iso:international-workshop-agreement" => "Pubid::Iso::Identifiers::InternationalWorkshopAgreement", "pubid:iso:technical-report" => "Pubid::Iso::Identifiers::TechnicalReport", "pubid:iso:technical-specification" => "Pubid::Iso::Identifiers::TechnicalSpecification", "pubid:iso:pas" => "Pubid::Iso::Identifiers::Pas", "pubid:iso:guide" => "Pubid::Iso::Identifiers::Guide", "pubid:iso:recommendation" => "Pubid::Iso::Identifiers::Recommendation", "pubid:iso:amendment" => "Pubid::Iso::Identifiers::Amendment", "pubid:iso:corrigendum" => "Pubid::Iso::Identifiers::Corrigendum", "pubid:iso:supplement" => "Pubid::Iso::Identifiers::Supplement", "pubid:iso:addendum" => "Pubid::Iso::Identifiers::Addendum", "pubid:iso:extract" => "Pubid::Iso::Identifiers::Extract", "pubid:iso:directives" => "Pubid::Iso::Identifiers::Directives", "pubid:iso:directives-supplement" => "Pubid::Iso::Identifiers::DirectivesSupplement", "pubid:iso:data" => "Pubid::Iso::Identifiers::Data", "pubid:iso:tc-document" => "Pubid::Iso::Identifiers::TcDocument", "pubid:iso:technology-trends-assessments" => "Pubid::Iso::Identifiers::TechnologyTrendsAssessments", }.freeze
Class Method Summary collapse
-
.build_type_map ⇒ Object
Build type map from Scheme.identifiers for validation.
- .parse(string, format: :auto) ⇒ Object
Methods inherited from Pubid::Identifier
#base_identifier, #eql?, #exclude, #hash, #initialize, #mr_number, #mr_number_with_part, #mr_part, #mr_publisher, #mr_type, #mr_year, #new_edition_of?, polymorphic_name, #render, #resolve_urn_generator, #root, #to_mr_string, #to_s, #to_supplement_s, #to_urn, #urn_supplement_type, #urn_type_code
Constructor Details
This class inherits a constructor from Pubid::Identifier
Class Method Details
.build_type_map ⇒ Object
Build type map from Scheme.identifiers for validation
39 40 41 42 43 |
# File 'lib/pubid/iso/identifier.rb', line 39 def self.build_type_map Scheme.identifiers.to_h do |klass| [klass.polymorphic_name, klass.name] end end |
.parse(string, format: :auto) ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/pubid/iso/identifier.rb', line 49 def self.parse(string, format: :auto) format = Pubid::FormatDetector.detect(string) if format == :auto case format when :urn Pubid::Iso::UrnParser.parse(string) when :mr_string Pubid::Parsers::MrString.parse(string) else parsed = Pubid::Iso::Parser.new.parse(string) if parsed.nil? || parsed.empty? raise Pubid::Iso::Parser::ParseError, "Invalid identifier format" end Pubid::Iso::Builder.new(Pubid::Iso::Scheme).build(parsed) end end |