Class: Pubid::Ecma::UrnParser

Inherits:
UrnParser::Base show all
Defined in:
lib/pubid/ecma/urn_parser.rb

Overview

Parses ECMA URNs back into identifiers, inverting UrnGenerator.

Examples:

urn:ecma:411        -> ECMA-411
urn:ecma:418:part-1 -> ECMA-418-1
urn:ecma:tr:101     -> ECMA TR/101
urn:ecma:mem:1970   -> ECMA MEM/1970

Instance Method Summary collapse

Methods inherited from UrnParser::Base

parse

Instance Method Details

#parse_urn(urn) ⇒ Object



13
14
15
16
17
18
19
20
21
# File 'lib/pubid/ecma/urn_parser.rb', line 13

def parse_urn(urn)
  parts = split_parts(strip_namespace(urn))
  tag = %w[tr mem].include?(parts.first) ? parts.shift : nil
  number = parts.shift
  part = if parts.first&.start_with?("part-")
           parts.shift.sub("part-", "")
         end
  flavor_parse(reconstruct(tag, number, part))
end