Class: Pubid::Nist::Series::Ir
- Inherits:
-
LetterPreserving
- Object
- Base
- LetterPreserving
- Pubid::Nist::Series::Ir
- Defined in:
- lib/pubid/nist/series/ir.rb
Overview
IR (Interagency Report) series carries the most series-specific logic:
-
“R” or “Ur” letter suffix becomes revision “r1” (e.g., “79-1786R”).
-
part_num alongside second_num becomes a Part component (type “pt”).
-
Preprocessing converts “84-2946” → “84e2946”; this class reverses that side effect so IR keeps the compound number form.
Class Method Summary collapse
- .cast_letter_number(value, _parsed_hash) ⇒ Object
- .finalize_identifier(identifier, _parsed_hash) ⇒ Object
- .handle_letter_num_compound?(identifier, first_num:, letter_base:, letter_suffix:) ⇒ Boolean
- .part_num_as_component? ⇒ Boolean
Methods inherited from LetterPreserving
Methods inherited from Base
combine_letter_suffix, modern_edition_date?, preserve_letter_suffix?
Class Method Details
.cast_letter_number(value, _parsed_hash) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/pubid/nist/series/ir.rb', line 13 def self.cast_letter_number(value, _parsed_hash) full = combine_letter_suffix(value) return nil if full.nil? || full.empty? if ["R", "Ur"].include?(full) value[:letter_suffix] = full value else super end end |
.finalize_identifier(identifier, _parsed_hash) ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/pubid/nist/series/ir.rb', line 44 def self.finalize_identifier(identifier, _parsed_hash) return unless identifier.number value = identifier.number.value.to_s match = value.match(/^(\d+)e(\d{4})$/) return unless match identifier.number = Components::Code.new( value: "#{match[1]}-#{match[2]}", ) identifier.edition = nil identifier.edition_component = nil end |
.handle_letter_num_compound?(identifier, first_num:, letter_base:, letter_suffix:) ⇒ Boolean
29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/pubid/nist/series/ir.rb', line 29 def self.handle_letter_num_compound?(identifier, first_num:, letter_base:, letter_suffix:) return false unless letter_suffix == "R" identifier.number = Components::Code.new( value: "#{first_num.value}-#{letter_base}", ) edition_obj = Components::Edition.new(type: "r", id: "1") identifier.edition = edition_obj identifier.edition_component = edition_obj identifier.revision = "r1" true end |
.part_num_as_component? ⇒ Boolean
25 26 27 |
# File 'lib/pubid/nist/series/ir.rb', line 25 def self.part_num_as_component? true end |