Class: Pubid::Cie::Builder
- Inherits:
-
Object
- Object
- Pubid::Cie::Builder
- Defined in:
- lib/pubid/cie/builder.rb
Overview
Builder transforms parsed data into CIE identifier objects Single Responsibility: Object construction from parse tree
Instance Method Summary collapse
-
#build(parsed_hash, original_string: nil) ⇒ Object
Build identifier from parsed hash.
-
#initialize ⇒ Builder
constructor
A new instance of Builder.
Constructor Details
#initialize ⇒ Builder
Returns a new instance of Builder.
8 9 10 |
# File 'lib/pubid/cie/builder.rb', line 8 def initialize # Builder doesn't need scheme for CIE (simpler than ISO/IEC) end |
Instance Method Details
#build(parsed_hash, original_string: nil) ⇒ Object
Build identifier from parsed hash
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/pubid/cie/builder.rb', line 13 def build(parsed_hash, original_string: nil) # Determine identifier class based on parsed content identifier_class = determine_class(parsed_hash) # Supplement / Corrigendum wrap a nested base. if identifier_class == Cie::Identifiers::Corrigendum return build_corrigendum(parsed_hash) end if identifier_class == Cie::Identifiers::Supplement return build_supplement(parsed_hash) end # Extract attributes with style detection attributes = extract_attributes(parsed_hash) # For Bundle, parse each comma-separated member and hoist a shared base. if parsed_hash[:bundle_items] && original_string attributes.merge!(build_bundle(original_string)) end # Construct identifier identifier_class.new(**attributes) end |