Class: Pubid::Iec::Components::Code

Inherits:
Components::Code
  • Object
show all
Defined in:
lib/pubid/iec/components/code.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Components::Code

#eql?, #hash, #render

Constructor Details

#initialize(value: nil, number: nil, prefix: nil, part: nil) ⇒ Code

Returns a new instance of Code.



13
14
15
16
17
18
# File 'lib/pubid/iec/components/code.rb', line 13

def initialize(value: nil, number: nil, prefix: nil, part: nil)
  # Support both 'value' (for convenience) and 'number' (explicit)
  @number = value || number
  @prefix = prefix
  @part = part
end

Class Method Details

.parse(string) ⇒ Object

Parse IEC code formats:

  • “60034” (just number)

  • “60034-1” (number with part)

  • “TR 61000” (with prefix)

  • “TS 62443” (with prefix)



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/pubid/iec/components/code.rb', line 37

def self.parse(string)
  parts = string.strip.split(" ", 2)

  if parts.size == 2
    # Has prefix: "TR 61000-1-2"
    prefix = parts[0]
    number_part = parts[1]
  else
    # No prefix: "60034-1"
    prefix = nil
    number_part = parts[0]
  end

  # Split number and part
  number_parts = number_part.split("-", 2)
  number = number_parts[0]
  part = number_parts[1]

  new(prefix: prefix, number: number, part: part)
end

Instance Method Details

#full_codeObject



28
29
30
# File 'lib/pubid/iec/components/code.rb', line 28

def full_code
  to_s
end

#to_sObject



20
21
22
23
24
25
26
# File 'lib/pubid/iec/components/code.rb', line 20

def to_s
  result = ""
  result += "#{prefix} " if prefix
  result += number
  result += "-#{part}" if part
  result
end