Class: Pubid::Bsi::Identifiers::Method
- Inherits:
-
SingleIdentifier
- Object
- Lutaml::Model::Serializable
- Identifier
- SingleIdentifier
- Pubid::Bsi::Identifiers::Method
- Defined in:
- lib/pubid/bsi/identifiers/method.rb
Overview
BSI Method Examples:
-
Basic: “BS 2782-1:Method 131B:1983”
-
Range: “BS 2782-4:Methods 451F to 451J:1978”
-
And: “BS 2782-8:Methods 823A and 823B:1978”
Constant Summary collapse
- TYPED_STAGES =
[ Pubid::Components::TypedStage.new( code: :pubmethod, stage_code: :published, type_code: :method, abbr: ["Method", "Methods"], name: "Method", harmonized_stages: %w[60.00 60.60], ), ].freeze
Class Method Summary collapse
Instance Method Summary collapse
Methods inherited from SingleIdentifier
Methods inherited from Identifier
#base_identifier, #eql?, #exclude, #hash, #initialize, #mr_number, #mr_number_with_part, #mr_part, #mr_publisher, #mr_type, #mr_year, #new_edition_of?, polymorphic_name, #render, #resolve_urn_generator, #root, #to_mr_string, #to_supplement_s, #to_urn, #urn_supplement_type, #urn_type_code
Constructor Details
This class inherits a constructor from Pubid::Identifier
Class Method Details
.type ⇒ Object
28 29 30 |
# File 'lib/pubid/bsi/identifiers/method.rb', line 28 def self.type { key: :method, title: "Method", short: "Method" } end |
Instance Method Details
#to_s(lang: :en, lang_single: false) ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/pubid/bsi/identifiers/method.rb', line 32 def to_s(lang: :en, lang_single: false) # Build string representation - Method has three formats parts = [] # Publisher (BS) parts << publisher.to_s if publisher # Number with part (e.g., "2782-1") if number number_str = number.is_a?(Components::Code) ? number.value.to_s : number.to_s # Add part if present (e.g., "2782" + "-" + "1") if part part_val = part.is_a?(Components::Code) ? part.value : part number_str += "-#{part_val}" end parts << number_str end result = parts.join(" ") # Method suffix with appropriate format if method_to # Range format: ":Methods X to Y" result += ":Methods #{method_code} to #{method_to}" elsif method_and # And format: ":Methods X and Y" result += ":Methods #{method_code} and #{method_and}" else # Basic format: singular or plural method_word = is_plural ? "Methods" : "Method" result += ":#{method_word} #{method_code}" end # Date if date year_val = date.is_a?(Components::Date) ? date.year : date.to_i result += ":#{year_val}" end result end |