Class: Pubid::Itu::Model

Inherits:
Lutaml::Model::Serializable
  • Object
show all
Defined in:
lib/pubid/itu/model.rb

Instance Method Summary collapse

Instance Method Details

#to_sObject



24
25
26
27
28
29
30
31
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# File 'lib/pubid/itu/model.rb', line 24

def to_s
  parts = []

  # Add publisher and sector
  parts << "ITU-#{sector}" if sector

  # Add series (handle special cases)
  if series == "OB"
    # Operational Bulletin
    parts << "#{series} No. #{number}"
  elsif series&.start_with?("SG")
    # Study Group Question
    parts << "#{series}.#{number}"
    parts[-1] << "-#{part}" if part
  elsif series == "R" && !number
    # Resolution without number
    parts << "R.#{number}"
    parts[-1] << "-#{part}" if part
  elsif series
    # Regular series
    series_str = series.to_s
    if number
      series_str << ".#{number}"
      series_str << ".#{subseries}" if subseries
      series_str << "-#{part}" if part
    end
    parts << series_str

    # Add second number for combined standards
    if second_number.is_a?(Hash)
      second_str = "/#{second_number[:series]}.#{second_number[:number]}"
      second_str << ".#{second_number[:subseries]}" if second_number[:subseries]
      second_str << "-#{second_number[:part]}" if second_number[:part]
      parts[-1] << second_str
    end

    # Add range notation
    if range.is_a?(Hash)
      parts[-1] << "-#{range[:series]}.#{range[:number]}"
    end
  elsif number && !series
    # Handbook or similar (just number)
    parts << number
    parts[-1] << "-#{part}" if part
  end

  # Add supplement
  if supplement
    parts << "Suppl. #{supplement}"
  end

  # Add annex
  if annex
    parts << "Annex #{annex}"
  end

  # Add date
  if month && year
    parts << "(#{month.rjust(2, '0')}/#{year})"
  elsif year
    parts << "(#{year})"
  end

  # Add amendment
  if amendment
    parts << "Amd #{amendment}"
  end

  # Add corrigendum
  if corrigendum
    parts << "Cor. #{corrigendum}"
  end

  # Add addendum
  if addendum
    parts << "Add. #{addendum}"
  end

  # Add appendix
  if appendix
    parts << "App. #{appendix}"
  end

  parts.join(" ")
end