Class: Pubid::Jcgm::Builder

Inherits:
Builder::Base show all
Defined in:
lib/pubid/jcgm/builder.rb

Instance Attribute Summary

Attributes inherited from Builder::Base

#identifier

Instance Method Summary collapse

Constructor Details

#initialize(scheme) ⇒ Builder

Returns a new instance of Builder.



6
7
8
# File 'lib/pubid/jcgm/builder.rb', line 6

def initialize(scheme)
  @scheme = scheme
end

Instance Method Details

#build(parsed_hash) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/pubid/jcgm/builder.rb', line 23

def build(parsed_hash)
  identifier = locate_identifier_klass(parsed_hash).new
  assign_attributes(identifier, parsed_hash)

  if identifier.class.attributes.key?(:typed_stage) && identifier.typed_stage.nil?
    default_typed_stage = @scheme.locate_typed_stage_by_abbr("")
    identifier.typed_stage = default_typed_stage
    identifier.stage = default_typed_stage.to_stage if identifier.class.attributes.key?(:stage)
    identifier.type = default_typed_stage.to_type if identifier.class.attributes.key?(:type)
  end

  identifier
end

#locate_identifier_klass(parsed_hash) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/pubid/jcgm/builder.rb', line 10

def locate_identifier_klass(parsed_hash)
  if parsed_hash[:base_identifier]
    return @scheme.locate_identifier_klass_by_type_code(:amendment)
  end

  if parsed_hash[:gum_number]
    return @scheme.locate_identifier_klass_by_type_code(:gum_guide)
  end

  typed_stage = locate_typed_stage(parsed_hash[:type_with_stage])
  @scheme.locate_identifier_klass_by_type_code(typed_stage.type_code)
end