Class: Pubid::Easc::Builder

Inherits:
Object
  • Object
show all
Defined in:
lib/pubid/easc/builder.rb

Overview

Builds an EASC identifier object from the Parslet parse tree.

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.build(parsed) ⇒ Object



22
23
24
# File 'lib/pubid/easc/builder.rb', line 22

def self.build(parsed)
  new.build(parsed)
end

Instance Method Details

#build(parsed) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/pubid/easc/builder.rb', line 7

def build(parsed)
  series_cyr = stringify(parsed[:series])&.upcase
  canonical_series = series_to_canonical(series_cyr)
  klass = Easc.identifier_klass_for_series(canonical_series) ||
          Identifier
  attrs = {
    series:  canonical_series,
    variant: variant_to_canonical(stringify(parsed[:variant])),
    number:  stringify(parsed[:number]),
    year:    stringify(parsed[:year]),
  }.compact

  klass.new(**attrs)
end