Module: Pubid::Ieee

Defined in:
lib/pubid/ieee.rb,
lib/pubid/ieee/ire.rb,
lib/pubid/ieee/aiee.rb,
lib/pubid/ieee/nesc.rb,
lib/pubid/ieee_debug.rb,
lib/pubid/ieee/parser.rb,
lib/pubid/ieee/builder.rb,
lib/pubid/ieee/renderer.rb,
lib/pubid/ieee/identifier.rb,
lib/pubid/ieee/ire/parser.rb,
lib/pubid/ieee/pre_parser.rb,
lib/pubid/ieee/urn_parser.rb,
lib/pubid/ieee/aiee/parser.rb,
lib/pubid/ieee/identifiers.rb,
lib/pubid/ieee/ire/builder.rb,
lib/pubid/ieee/nesc/parser.rb,
lib/pubid/ieee/aiee/builder.rb,
lib/pubid/ieee/nesc/builder.rb,
lib/pubid/ieee/typed_stages.rb,
lib/pubid/ieee/urn_generator.rb,
lib/pubid/ieee/ire/identifier.rb,
lib/pubid/ieee/aiee/identifier.rb,
lib/pubid/ieee/components/code.rb,
lib/pubid/ieee/components/draft.rb,
lib/pubid/ieee/identifiers/base.rb,
lib/pubid/ieee/identifiers/nesc.rb,
lib/pubid/ieee/identifiers/standard.rb,
lib/pubid/ieee/identifiers/nesc/base.rb,
lib/pubid/ieee/components/typed_stage.rb,
lib/pubid/ieee/identifiers/nesc/draft.rb,
lib/pubid/ieee/components/relationship.rb,
lib/pubid/ieee/identifiers/corrigendum.rb,
lib/pubid/ieee/identifiers/si_standard.rb,
lib/pubid/ieee/identifiers/nesc/redline.rb,
lib/pubid/ieee/identifiers/nesc/handbook.rb,
lib/pubid/ieee/identifiers/nesc/standard.rb,
lib/pubid/ieee/identifiers/dual_published.rb,
lib/pubid/ieee/identifiers/dual_identifier.rb,
lib/pubid/ieee/identifiers/adopted_standard.rb,
lib/pubid/ieee/identifiers/joint_development.rb,
lib/pubid/ieee/identifiers/redlined_standard.rb,
lib/pubid/ieee/identifiers/csa_dual_published.rb,
lib/pubid/ieee/identifiers/iec_ieee_copublished.rb,
lib/pubid/ieee/identifiers/supplement_identifier.rb,
lib/pubid/ieee/identifiers/conformance_identifier.rb,
lib/pubid/ieee/identifiers/parenthetical_identifier.rb,
lib/pubid/ieee/identifiers/project_draft_identifier.rb,
lib/pubid/ieee/identifiers/interpretation_identifier.rb,
lib/pubid/ieee/identifiers/multi_numbered_identifier.rb

Defined Under Namespace

Modules: Aiee, Components, Identifier, Identifiers, Ire, Nesc, PreParser, TypedStages Classes: Builder, Parser, Renderer, UrnGenerator, UrnParser

Constant Summary collapse

TYPED_STAGES =

Backward compatibility aliases at module level These allow code expecting Pubid::Ieee::TYPED_STAGES to still work

TypedStages::TYPED_STAGES
DEFAULT_TYPED_STAGE =
TypedStages::DEFAULT_TYPED_STAGE

Class Method Summary collapse

Class Method Details

.all_typed_stagesArray<Pubid::Components::TypedStage>

Build typed stage index from TypedStages module

Returns:



42
43
44
# File 'lib/pubid/ieee.rb', line 42

def all_typed_stages
  @all_typed_stages ||= TypedStages::TYPED_STAGES
end

.identifier_typesArray<Class>

Auto-discover all identifier types from the Identifiers namespace

Returns:

  • (Array<Class>)

    identifier classes that define a self.type Hash



33
34
35
36
37
38
# File 'lib/pubid/ieee.rb', line 33

def identifier_types
  @identifier_types ||= Identifiers.constants
    .filter_map { |c| begin; Identifiers.const_get(c); rescue NameError; nil; end }
    .select { |c| c.is_a?(Class) && c.singleton_methods(false).include?(:type) }
    .select { |c| c.type.is_a?(Hash) }
end

.locate_stage(abbr) ⇒ Pubid::Components::TypedStage?

Lookup: abbreviation -> typed stage

Parameters:

  • abbr (String, Symbol)

    the abbreviation to find

Returns:



56
57
58
59
# File 'lib/pubid/ieee.rb', line 56

def locate_stage(abbr)
  abbr_str = abbr.to_s.upcase
  all_typed_stages.find { |s| s.abbr.any? { |a| a.to_s.upcase == abbr_str } }
end

.locate_stage_by_ieee_draft(draft) ⇒ Pubid::Components::TypedStage?

Lookup: IEEE draft notation -> typed stage

Parameters:

  • draft (String)

    IEEE draft notation (e.g., “D1”, “D5”, “P”)

Returns:



64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/pubid/ieee.rb', line 64

def locate_stage_by_ieee_draft(draft)
  return nil if draft.nil? || draft.to_s.strip.empty?

  draft_str = draft.to_s.strip

  # Try exact match on abbreviation first
  ts = all_typed_stages.find { |t| t.abbr.include?(draft_str) }
  return ts if ts

  # Try match on ieee_draft_equivalent
  all_typed_stages.find { |t| t.ieee_draft_equivalent == draft_str }
end

.locate_stage_by_iso_stage(stage) ⇒ Pubid::Components::TypedStage?

Lookup: ISO stage code -> typed stage

Parameters:

  • stage (String)

    ISO stage code (e.g., “WD”, “CD”, “DIS”, “FDIS”)

Returns:



80
81
82
83
84
# File 'lib/pubid/ieee.rb', line 80

def locate_stage_by_iso_stage(stage)
  return nil if stage.nil? || stage.to_s.strip.empty?

  all_typed_stages.find { |ts| ts.iso_stage_equivalent == stage.to_s.strip }
end

.locate_type(code) ⇒ Class?

Lookup: type code -> identifier class

Parameters:

  • code (String, Symbol)

    the type key to find

Returns:

  • (Class, nil)

    the matching identifier class



49
50
51
# File 'lib/pubid/ieee.rb', line 49

def locate_type(code)
  identifier_types.find { |t| t.type[:key].to_s == code.to_s }
end

.parse(input) ⇒ Object



27
28
29
# File 'lib/pubid/ieee.rb', line 27

def parse(input)
  Identifier.parse(input)
end