Class: Pubid::Doi::Parser

Inherits:
Parslet::Parser
  • Object
show all
Defined in:
lib/pubid/doi/parser.rb

Overview

Parslet grammar for Digital Object Identifiers per ISO 26324.

Accepts:

[doi:|DOI:]10.{REGISTRAR}/{SUFFIX}
https://doi.org/10.{REGISTRAR}/{SUFFIX}

SUFFIX is one-or-more chars from [A-Za-z0-9._-/()] (printable minus whitespace). The grammar is intentionally permissive on suffix chars because real DOIs cover the full printable range.

Class Method Summary collapse

Class Method Details

.parse(input) ⇒ Object



43
44
45
46
47
48
49
# File 'lib/pubid/doi/parser.rb', line 43

def self.parse(input)
  # Normalize a URL resolver form to bare form before parsing. The
  # parser's `url_prefix.maybe >> scheme_prefix.maybe >> slash.maybe`
  # chain also handles this in-grammar, but pre-stripping yields a
  # cleaner error message for malformed URLs.
  new.parse(input)
end