Module: Coradoc::Reference::Address::Isbn
- Defined in:
- lib/coradoc/reference/address/isbn.rb
Overview
ISBN — book identifier. Recognizes an optional "ISBN" prefix (case insensitive) and either ISBN-10 or ISBN-13 digits. Bare numbers must be long enough to be ISBN-shaped so short numeric anchors are not claimed.
Constant Summary collapse
- ISBN_PATTERN =
/\A(?:ISBN\s+)?(\d[\d\-Xx]{8,16})\z/i
Class Method Summary collapse
Class Method Details
.matches?(raw) ⇒ Boolean
19 20 21 22 23 |
# File 'lib/coradoc/reference/address/isbn.rb', line 19 def matches?(raw) return false if raw.nil? || raw.empty? ISBN_PATTERN.match?(raw.to_s) end |
.parse(raw) ⇒ Object
25 26 27 28 29 30 31 |
# File 'lib/coradoc/reference/address/isbn.rb', line 25 def parse(raw) match = ISBN_PATTERN.match(raw.to_s) raise Address::ParseError, "Invalid ISBN: #{raw.inspect}" unless match target = match[1] Address.new(scheme: 'isbn', target: target) end |
.scheme_name ⇒ Object
15 16 17 |
# File 'lib/coradoc/reference/address/isbn.rb', line 15 def scheme_name :isbn end |
.serialize(address) ⇒ Object
33 34 35 |
# File 'lib/coradoc/reference/address/isbn.rb', line 33 def serialize(address) "ISBN #{address.target}" end |