rcap 2.5.0 → 2.7.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. checksums.yaml +5 -5
  2. data/.ruby-version +1 -0
  3. data/CHANGELOG.md +18 -0
  4. data/README.md +1 -0
  5. data/lib/rcap.rb +3 -1
  6. data/lib/rcap/alert.rb +4 -2
  7. data/lib/rcap/base/alert.rb +70 -73
  8. data/lib/rcap/base/area.rb +19 -13
  9. data/lib/rcap/base/circle.rb +15 -4
  10. data/lib/rcap/base/event_code.rb +2 -0
  11. data/lib/rcap/base/geocode.rb +2 -0
  12. data/lib/rcap/base/info.rb +81 -75
  13. data/lib/rcap/base/parameter.rb +8 -6
  14. data/lib/rcap/base/point.rb +4 -2
  15. data/lib/rcap/base/polygon.rb +16 -8
  16. data/lib/rcap/base/resource.rb +13 -13
  17. data/lib/rcap/cap_1_0/alert.rb +36 -39
  18. data/lib/rcap/cap_1_0/area.rb +2 -0
  19. data/lib/rcap/cap_1_0/circle.rb +2 -0
  20. data/lib/rcap/cap_1_0/event_code.rb +3 -1
  21. data/lib/rcap/cap_1_0/geocode.rb +3 -1
  22. data/lib/rcap/cap_1_0/info.rb +3 -1
  23. data/lib/rcap/cap_1_0/parameter.rb +3 -2
  24. data/lib/rcap/cap_1_0/point.rb +2 -0
  25. data/lib/rcap/cap_1_0/polygon.rb +3 -1
  26. data/lib/rcap/cap_1_0/resource.rb +2 -0
  27. data/lib/rcap/cap_1_1/alert.rb +4 -2
  28. data/lib/rcap/cap_1_1/area.rb +2 -0
  29. data/lib/rcap/cap_1_1/circle.rb +2 -0
  30. data/lib/rcap/cap_1_1/event_code.rb +3 -1
  31. data/lib/rcap/cap_1_1/geocode.rb +3 -1
  32. data/lib/rcap/cap_1_1/info.rb +48 -46
  33. data/lib/rcap/cap_1_1/parameter.rb +2 -1
  34. data/lib/rcap/cap_1_1/point.rb +2 -0
  35. data/lib/rcap/cap_1_1/polygon.rb +3 -1
  36. data/lib/rcap/cap_1_1/resource.rb +12 -11
  37. data/lib/rcap/cap_1_2/alert.rb +4 -2
  38. data/lib/rcap/cap_1_2/area.rb +2 -0
  39. data/lib/rcap/cap_1_2/circle.rb +2 -0
  40. data/lib/rcap/cap_1_2/event_code.rb +3 -1
  41. data/lib/rcap/cap_1_2/geocode.rb +3 -1
  42. data/lib/rcap/cap_1_2/info.rb +55 -51
  43. data/lib/rcap/cap_1_2/parameter.rb +2 -1
  44. data/lib/rcap/cap_1_2/point.rb +2 -0
  45. data/lib/rcap/cap_1_2/polygon.rb +4 -2
  46. data/lib/rcap/cap_1_2/resource.rb +14 -12
  47. data/lib/rcap/config.rb +2 -0
  48. data/lib/rcap/custom_validators.rb +30 -27
  49. data/lib/rcap/extensions/array.rb +2 -0
  50. data/lib/rcap/extensions/date.rb +3 -1
  51. data/lib/rcap/extensions/date_time.rb +4 -1
  52. data/lib/rcap/extensions/float.rb +2 -0
  53. data/lib/rcap/extensions/integer.rb +7 -0
  54. data/lib/rcap/extensions/nil_class.rb +2 -0
  55. data/lib/rcap/extensions/string.rb +3 -1
  56. data/lib/rcap/extensions/time.rb +3 -0
  57. data/lib/rcap/formatters/yaml.rb +5 -0
  58. data/lib/rcap/info.rb +2 -0
  59. data/lib/rcap/utilities.rb +8 -10
  60. data/lib/rcap/validation.rb +19 -14
  61. data/lib/rcap/version.rb +3 -1
  62. data/rcap.gemspec +5 -5
  63. data/spec/alert_spec.rb +8 -9
  64. data/spec/cap_1_0/alert_spec.rb +4 -5
  65. data/spec/cap_1_0/area_spec.rb +7 -10
  66. data/spec/cap_1_0/circle_spec.rb +9 -0
  67. data/spec/cap_1_0/event_code_spec.rb +1 -1
  68. data/spec/cap_1_0/geocode_spec.rb +1 -1
  69. data/spec/cap_1_0/info_spec.rb +38 -38
  70. data/spec/cap_1_0/polygon_spec.rb +7 -5
  71. data/spec/cap_1_0/resource_spec.rb +6 -7
  72. data/spec/cap_1_1/alert_spec.rb +6 -7
  73. data/spec/cap_1_1/area_spec.rb +6 -8
  74. data/spec/cap_1_1/circle_spec.rb +9 -0
  75. data/spec/cap_1_1/info_spec.rb +26 -26
  76. data/spec/cap_1_1/parameter_spec.rb +1 -2
  77. data/spec/cap_1_1/polygon_spec.rb +12 -10
  78. data/spec/cap_1_1/resource_spec.rb +13 -13
  79. data/spec/cap_1_2/alert_spec.rb +7 -8
  80. data/spec/cap_1_2/area_spec.rb +6 -6
  81. data/spec/cap_1_2/circle_spec.rb +9 -0
  82. data/spec/cap_1_2/info_spec.rb +25 -26
  83. data/spec/cap_1_2/polygon_spec.rb +8 -0
  84. data/spec/cap_1_2/resource_spec.rb +13 -13
  85. data/spec/extensions_spec.rb +2 -2
  86. data/spec/spec_helper.rb +2 -2
  87. data/spec/validations_spec.rb +0 -1
  88. metadata +15 -15
  89. data/lib/rcap/extensions/fixnum.rb +0 -5
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RCAP
2
4
  module CAP_1_0
3
5
  # An Alert object is valid if
@@ -25,34 +27,28 @@ module RCAP
25
27
  Info
26
28
  end
27
29
 
28
- PASSWORD_ELEMENT_NAME = 'password'
30
+ PASSWORD_ELEMENT_NAME = 'password'
29
31
 
30
32
  # @return [REXML::Element]
31
33
  def to_xml_element
32
34
  xml_element = REXML::Element.new(XML_ELEMENT_NAME)
33
35
  xml_element.add_namespace(XMLNS)
34
- xml_element.add_element(IDENTIFIER_ELEMENT_NAME).add_text(@identifier) if @identifier
35
- xml_element.add_element(SENDER_ELEMENT_NAME).add_text(@sender) if @sender
36
- xml_element.add_element(SENT_ELEMENT_NAME).add_text(@sent.to_s_for_cap) if @sent
37
- xml_element.add_element(STATUS_ELEMENT_NAME).add_text(@status) if @status
38
- xml_element.add_element(MSG_TYPE_ELEMENT_NAME).add_text(@msg_type) if @msg_type
39
- xml_element.add_element(PASSWORD_ELEMENT_NAME).add_text(@password) if @password
40
- xml_element.add_element(SOURCE_ELEMENT_NAME).add_text(@source) if @source
41
- xml_element.add_element(SCOPE_ELEMENT_NAME).add_text(@scope) if @scope
42
- xml_element.add_element(RESTRICTION_ELEMENT_NAME).add_text(@restriction) if @restriction
43
- if @addresses.any?
44
- xml_element.add_element(ADDRESSES_ELEMENT_NAME).add_text(@addresses.to_s_for_cap)
45
- end
36
+ xml_element.add_element(IDENTIFIER_ELEMENT_NAME).add_text(@identifier.to_s) if @identifier
37
+ xml_element.add_element(SENDER_ELEMENT_NAME).add_text(@sender.to_s) if @sender
38
+ xml_element.add_element(SENT_ELEMENT_NAME).add_text(@sent.to_s_for_cap.to_s) if @sent
39
+ xml_element.add_element(STATUS_ELEMENT_NAME).add_text(@status.to_s) if @status
40
+ xml_element.add_element(MSG_TYPE_ELEMENT_NAME).add_text(@msg_type.to_s) if @msg_type
41
+ xml_element.add_element(PASSWORD_ELEMENT_NAME).add_text(@password.to_s) if @password
42
+ xml_element.add_element(SOURCE_ELEMENT_NAME).add_text(@source.to_s) if @source
43
+ xml_element.add_element(SCOPE_ELEMENT_NAME).add_text(@scope.to_s) if @scope
44
+ xml_element.add_element(RESTRICTION_ELEMENT_NAME).add_text(@restriction.to_s) if @restriction
45
+ xml_element.add_element(ADDRESSES_ELEMENT_NAME).add_text(@addresses.to_s_for_cap) if @addresses.any?
46
46
  @codes.each do |code|
47
- xml_element.add_element(CODE_ELEMENT_NAME).add_text(code)
48
- end
49
- xml_element.add_element(NOTE_ELEMENT_NAME).add_text(@note) if @note
50
- if @references.any?
51
- xml_element.add_element(REFERENCES_ELEMENT_NAME).add_text(@references.join(' '))
52
- end
53
- if @incidents.any?
54
- xml_element.add_element(INCIDENTS_ELEMENT_NAME).add_text(@incidents.join(' '))
47
+ xml_element.add_element(CODE_ELEMENT_NAME).add_text(code.to_s)
55
48
  end
49
+ xml_element.add_element(NOTE_ELEMENT_NAME).add_text(@note.to_s) if @note
50
+ xml_element.add_element(REFERENCES_ELEMENT_NAME).add_text(@references.join(' ')) if @references.any?
51
+ xml_element.add_element(INCIDENTS_ELEMENT_NAME).add_text(@incidents.join(' ')) if @incidents.any?
56
52
  @infos.each do |info|
57
53
  xml_element.add_element(info.to_xml_element)
58
54
  end
@@ -61,28 +57,29 @@ module RCAP
61
57
 
62
58
  # @return [String]
63
59
  def inspect
64
- alert_inspect = ["CAP Version: #{ CAP_VERSION }",
65
- "Identifier: #{ @identifier }",
66
- "Sender: #{ @sender }",
67
- "Sent: #{ @sent }",
68
- "Status: #{ @status }",
69
- "Message Type: #{ @msg_type }",
70
- "Password: #{ @password }",
71
- "Source: #{ @source }",
72
- "Scope: #{ @scope }",
73
- "Restriction: #{ @restriction }",
74
- "Addresses: #{ @addresses.to_s_for_cap }",
60
+ alert_inspect = ["CAP Version: #{CAP_VERSION}",
61
+ "Identifier: #{@identifier}",
62
+ "Sender: #{@sender}",
63
+ "Sent: #{@sent}",
64
+ "Status: #{@status}",
65
+ "Message Type: #{@msg_type}",
66
+ "Password: #{@password}",
67
+ "Source: #{@source}",
68
+ "Scope: #{@scope}",
69
+ "Restriction: #{@restriction}",
70
+ "Addresses: #{@addresses.to_s_for_cap}",
75
71
  'Codes:',
76
72
  @codes.map { |code| ' ' + code }.join("\n"),
77
- "Note: #{ @note }",
78
- "References: #{ @references.join(' ')}",
79
- "Incidents: #{ @incidents.join(' ')}",
73
+ "Note: #{@note}",
74
+ 'References:',
75
+ @references.join("\n "),
76
+ "Incidents: #{@incidents.join(' ')}",
80
77
  'Information:',
81
78
  @infos.map { |info| ' ' + info.to_s }.join("\n")].join("\n")
82
79
  RCAP.format_lines_for_inspect('ALERT', alert_inspect)
83
80
  end
84
81
 
85
- PASSWORD_XPATH = "cap:#{ PASSWORD_ELEMENT_NAME }"
82
+ PASSWORD_XPATH = "cap:#{PASSWORD_ELEMENT_NAME}"
86
83
 
87
84
  # @param [REXML::Element] alert_xml_element
88
85
  # @return [RCAP::CAP_1_0::Alert]
@@ -92,7 +89,7 @@ module RCAP
92
89
  end
93
90
  end
94
91
 
95
- PASSWORD_YAML = 'Password'
92
+ PASSWORD_YAML = 'Password'
96
93
 
97
94
  # Returns a string containing the YAML representation of the alert.
98
95
  #
@@ -124,7 +121,7 @@ module RCAP
124
121
  end
125
122
  end
126
123
 
127
- PASSWORD_KEY = 'password'
124
+ PASSWORD_KEY = 'password'
128
125
 
129
126
  # Returns a Hash representation of an Alert object
130
127
  #
@@ -145,7 +142,7 @@ module RCAP
145
142
  [NOTE_KEY, @note],
146
143
  [REFERENCES_KEY, @references],
147
144
  [INCIDENTS_KEY, @incidents],
148
- [INFOS_KEY, @infos.map { |info| info.to_h }])
145
+ [INFOS_KEY, @infos.map(&:to_h)])
149
146
  end
150
147
 
151
148
  # Initialises an Alert object from a Hash produced by Alert#to_h
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RCAP
2
4
  module CAP_1_0
3
5
  # An Area object is valid if
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RCAP
2
4
  module CAP_1_0
3
5
  # A Circle object is valid if
@@ -1,9 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RCAP
2
4
  module CAP_1_0
3
5
  # Subclass of {Parameter}
4
6
  class EventCode < RCAP::Base::EventCode
5
7
  XML_ELEMENT_NAME = 'eventCode'
6
- XPATH = "cap:#{ XML_ELEMENT_NAME }"
8
+ XPATH = "cap:#{XML_ELEMENT_NAME}"
7
9
 
8
10
  # @return [String]
9
11
  def xmlns
@@ -1,9 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RCAP
2
4
  module CAP_1_0
3
5
  # Subclass of {Parameter}
4
6
  class Geocode < RCAP::Base::Geocode
5
7
  XML_ELEMENT_NAME = 'geocode'
6
- XPATH = "cap:#{ XML_ELEMENT_NAME }"
8
+ XPATH = "cap:#{XML_ELEMENT_NAME}"
7
9
 
8
10
  # @return [String]
9
11
  def xmlns
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RCAP
2
4
  module CAP_1_0
3
5
  # In Info object is valid if
@@ -9,7 +11,7 @@ module RCAP
9
11
  # * all Resource objects in the resources collection are valid
10
12
  # * all Area objects in the areas collection are valid
11
13
  class Info < RCAP::Base::Info
12
- validates_inclusion_of(:certainty, allow_nil: true, in: VALID_CERTAINTIES, message: "can only be assigned the following values: #{ VALID_CERTAINTIES.join(', ') }")
14
+ validates_inclusion_of(:certainty, allow_nil: true, in: VALID_CERTAINTIES, message: "can only be assigned the following values: #{VALID_CERTAINTIES.join(', ')}")
13
15
 
14
16
  # @return [String]
15
17
  def xmlns
@@ -1,13 +1,14 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RCAP
2
4
  module CAP_1_0
3
5
  # A Parameter object is valid if
4
6
  # * it has a name
5
- # * it has a value
6
7
  class Parameter < RCAP::Base::Parameter
7
8
  # @return [REXML::Element]
8
9
  def to_xml_element
9
10
  xml_element = REXML::Element.new(self.class::XML_ELEMENT_NAME)
10
- xml_element.add_text("#{ @name }=#{ @value }")
11
+ xml_element.add_text("#{@name}=#{@value}")
11
12
  xml_element
12
13
  end
13
14
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RCAP
2
4
  module CAP_1_0
3
5
  # A Point object is valid if
@@ -1,7 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RCAP
2
4
  module CAP_1_0
3
5
  # A Polygon object is valid if
4
- # * it has a minimum of three points
6
+ # * if points are given it has a minimum of three points
5
7
  # * each Point object in the points collection is valid
6
8
  class Polygon < RCAP::Base::Polygon
7
9
  # @return [Class]
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RCAP
2
4
  module CAP_1_0
3
5
  # A Resource object is valid if
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RCAP
2
4
  module CAP_1_1
3
5
  # An Alert object is valid if
@@ -12,9 +14,9 @@ module RCAP
12
14
  XMLNS = 'urn:oasis:names:tc:emergency:cap:1.1'
13
15
  CAP_VERSION = '1.1'
14
16
 
15
- STATUS_DRAFT = 'Draft'
17
+ STATUS_DRAFT = 'Draft'
16
18
  # Valid values for status
17
- VALID_STATUSES = [STATUS_ACTUAL, STATUS_EXERCISE, STATUS_SYSTEM, STATUS_TEST, STATUS_DRAFT]
19
+ VALID_STATUSES = [STATUS_ACTUAL, STATUS_EXERCISE, STATUS_SYSTEM, STATUS_TEST, STATUS_DRAFT].freeze
18
20
 
19
21
  # @return [String]
20
22
  def xmlns
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RCAP
2
4
  module CAP_1_1
3
5
  # An Area object is valid if
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RCAP
2
4
  module CAP_1_1
3
5
  # A Circle object is valid if
@@ -1,9 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RCAP
2
4
  module CAP_1_1
3
5
  # Subclass of {Parameter}
4
6
  class EventCode < RCAP::Base::EventCode
5
7
  XML_ELEMENT_NAME = 'eventCode'
6
- XPATH = "cap:#{ XML_ELEMENT_NAME }"
8
+ XPATH = "cap:#{XML_ELEMENT_NAME}"
7
9
 
8
10
  # @return [String]
9
11
  def xmlns
@@ -1,9 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RCAP
2
4
  module CAP_1_1
3
5
  # Subclass of {Parameter}
4
6
  class Geocode < RCAP::Base::Geocode
5
7
  XML_ELEMENT_NAME = 'geocode'
6
- XPATH = "cap:#{ XML_ELEMENT_NAME }"
8
+ XPATH = "cap:#{XML_ELEMENT_NAME}"
7
9
 
8
10
  def xmlns
9
11
  Alert::XMLNS
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RCAP
2
4
  module CAP_1_1
3
5
  # In Info object is valid if
@@ -19,16 +21,16 @@ module RCAP
19
21
  # Valid values for response_type
20
22
  VALID_RESPONSE_TYPES = [RESPONSE_TYPE_SHELTER, RESPONSE_TYPE_EVACUATE,
21
23
  RESPONSE_TYPE_PREPARE, RESPONSE_TYPE_EXECUTE, RESPONSE_TYPE_MONITOR,
22
- RESPONSE_TYPE_ASSESS, RESPONSE_TYPE_NONE]
24
+ RESPONSE_TYPE_ASSESS, RESPONSE_TYPE_NONE].freeze
23
25
 
24
26
  CERTAINTY_OBSERVED = 'Observed'
25
27
  # Valid valies for certainty
26
28
  VALID_CERTAINTIES = [CERTAINTY_OBSERVED, CERTAINTY_LIKELY,
27
- CERTAINTY_POSSIBLE, CERTAINTY_UNLIKELY, CERTAINTY_UNKNOWN]
29
+ CERTAINTY_POSSIBLE, CERTAINTY_UNLIKELY, CERTAINTY_UNKNOWN].freeze
28
30
 
29
31
  validates_length_of(:categories, minimum: 1)
30
32
  validates_inclusion_of_members_of(:response_types, in: VALID_RESPONSE_TYPES, allow_blank: true)
31
- validates_inclusion_of(:certainty, allow_nil: true, in: VALID_CERTAINTIES, message: "can only be assigned the following values: #{ VALID_CERTAINTIES.join(', ') }")
33
+ validates_inclusion_of(:certainty, allow_nil: true, in: VALID_CERTAINTIES, message: "can only be assigned the following values: #{VALID_CERTAINTIES.join(', ')}")
32
34
 
33
35
  # @return [Array<String>] Collection of textual response types; elements must be from {VALID_RESPONSE_TYPES}
34
36
  attr_reader(:response_types)
@@ -64,7 +66,7 @@ module RCAP
64
66
  # @option attributes [Array<Resource>] :resources Collection of {Resource} objects
65
67
  # @option attributes [Array<Area>] :areas Collection of {Area} objects
66
68
  def initialize
67
- @response_types = []
69
+ @response_types = []
68
70
  super
69
71
  end
70
72
 
@@ -89,35 +91,35 @@ module RCAP
89
91
  end
90
92
 
91
93
  RESPONSE_TYPE_ELEMENT_NAME = 'responseType'
92
- RESPONSE_TYPE_XPATH = "cap:#{ RESPONSE_TYPE_ELEMENT_NAME }"
94
+ RESPONSE_TYPE_XPATH = "cap:#{RESPONSE_TYPE_ELEMENT_NAME}"
93
95
 
94
96
  # @return [REXML::Element]
95
97
  def to_xml_element
96
98
  xml_element = REXML::Element.new(XML_ELEMENT_NAME)
97
- xml_element.add_element(LANGUAGE_ELEMENT_NAME).add_text(@language) if @language
99
+ xml_element.add_element(LANGUAGE_ELEMENT_NAME).add_text(@language.to_s) if @language
98
100
  @categories.each do |category|
99
- xml_element.add_element(CATEGORY_ELEMENT_NAME).add_text(category)
101
+ xml_element.add_element(CATEGORY_ELEMENT_NAME).add_text(category.to_s)
100
102
  end
101
- xml_element.add_element(EVENT_ELEMENT_NAME).add_text(@event)
103
+ xml_element.add_element(EVENT_ELEMENT_NAME).add_text(@event.to_s)
102
104
  @response_types.each do |response_type|
103
- xml_element.add_element(RESPONSE_TYPE_ELEMENT_NAME).add_text(response_type)
105
+ xml_element.add_element(RESPONSE_TYPE_ELEMENT_NAME).add_text(response_type.to_s)
104
106
  end
105
- xml_element.add_element(URGENCY_ELEMENT_NAME).add_text(@urgency)
106
- xml_element.add_element(SEVERITY_ELEMENT_NAME).add_text(@severity)
107
- xml_element.add_element(CERTAINTY_ELEMENT_NAME).add_text(@certainty)
108
- xml_element.add_element(AUDIENCE_ELEMENT_NAME).add_text(@audience) if @audience
107
+ xml_element.add_element(URGENCY_ELEMENT_NAME).add_text(@urgency.to_s)
108
+ xml_element.add_element(SEVERITY_ELEMENT_NAME).add_text(@severity.to_s)
109
+ xml_element.add_element(CERTAINTY_ELEMENT_NAME).add_text(@certainty.to_s)
110
+ xml_element.add_element(AUDIENCE_ELEMENT_NAME).add_text(@audience.to_s) if @audience
109
111
  @event_codes.each do |event_code|
110
112
  xml_element.add_element(event_code.to_xml_element)
111
113
  end
112
114
  xml_element.add_element(EFFECTIVE_ELEMENT_NAME).add_text(@effective.to_s_for_cap) if @effective
113
115
  xml_element.add_element(ONSET_ELEMENT_NAME).add_text(@onset.to_s_for_cap) if @onset
114
116
  xml_element.add_element(EXPIRES_ELEMENT_NAME).add_text(@expires.to_s_for_cap) if @expires
115
- xml_element.add_element(SENDER_NAME_ELEMENT_NAME).add_text(@sender_name) if @sender_name
116
- xml_element.add_element(HEADLINE_ELEMENT_NAME).add_text(@headline) if @headline
117
- xml_element.add_element(DESCRIPTION_ELEMENT_NAME).add_text(@description) if @description
118
- xml_element.add_element(INSTRUCTION_ELEMENT_NAME).add_text(@instruction) if @instruction
119
- xml_element.add_element(WEB_ELEMENT_NAME).add_text(@web) if @web
120
- xml_element.add_element(CONTACT_ELEMENT_NAME).add_text(@contact) if @contact
117
+ xml_element.add_element(SENDER_NAME_ELEMENT_NAME).add_text(@sender_name.to_s) if @sender_name
118
+ xml_element.add_element(HEADLINE_ELEMENT_NAME).add_text(@headline.to_s) if @headline
119
+ xml_element.add_element(DESCRIPTION_ELEMENT_NAME).add_text(@description.to_s) if @description
120
+ xml_element.add_element(INSTRUCTION_ELEMENT_NAME).add_text(@instruction.to_s) if @instruction
121
+ xml_element.add_element(WEB_ELEMENT_NAME).add_text(@web.to_s) if @web
122
+ xml_element.add_element(CONTACT_ELEMENT_NAME).add_text(@contact.to_s) if @contact
121
123
  @parameters.each do |parameter|
122
124
  xml_element.add_element(parameter.to_xml_element)
123
125
  end
@@ -147,27 +149,27 @@ module RCAP
147
149
 
148
150
  # @return [String]
149
151
  def inspect
150
- info_inspect = "Language: #{ @language }\n"\
151
- "Categories: #{ @categories.to_s_for_cap }\n"\
152
- "Event: #{ @event }\n"\
153
- "Response Types: #{ @response_types.to_s_for_cap }\n"\
154
- "Urgency: #{ @urgency }\n"\
155
- "Severity: #{ @severity }\n"\
156
- "Certainty: #{ @certainty }\n"\
157
- "Audience: #{ @audience }\n"\
158
- "Event Codes: #{ @event_codes.inspect }\n"\
159
- "Effective: #{ @effective }\n"\
160
- "Onset: #{ @onset }\n"\
161
- "Expires: #{ @expires }\n"\
162
- "Sender Name: #{ @sender_name }\n"\
163
- "Headline: #{ @headline }\n"\
164
- "Description:\n" + @description.to_s.lines.map { |line| ' ' + line }.join("\n") + "\n"\
165
- "Instruction: #{ @instruction }\n"\
166
- "Web: #{ @web }\n"\
167
- "Contact: #{ @contact }\n"\
168
- "Parameters:\n" + @parameters.map { |parameter| ' ' + parameter.inspect }.join("\n") + "\n"\
169
- "Resources:\n" + @resources.map { |resource| ' ' + resource.inspect }.join("\n") + "\n"\
170
- "Area:\n" + @areas.map { |area| " #{ area }" }.join("\n") + "\n"
152
+ info_inspect = "Language: #{@language}\n"\
153
+ "Categories: #{@categories.to_s_for_cap}\n"\
154
+ "Event: #{@event}\n"\
155
+ "Response Types: #{@response_types.to_s_for_cap}\n"\
156
+ "Urgency: #{@urgency}\n"\
157
+ "Severity: #{@severity}\n"\
158
+ "Certainty: #{@certainty}\n"\
159
+ "Audience: #{@audience}\n"\
160
+ "Event Codes: #{@event_codes.inspect}\n"\
161
+ "Effective: #{@effective}\n"\
162
+ "Onset: #{@onset}\n"\
163
+ "Expires: #{@expires}\n"\
164
+ "Sender Name: #{@sender_name}\n"\
165
+ "Headline: #{@headline}\n"\
166
+ "Description:\n" + @description.to_s.lines.map { |line| ' ' + line }.join("\n") + "\n"\
167
+ "Instruction: #{@instruction}\n"\
168
+ "Web: #{@web}\n"\
169
+ "Contact: #{@contact}\n"\
170
+ "Parameters:\n" + @parameters.map { |parameter| ' ' + parameter.inspect }.join("\n") + "\n"\
171
+ "Resources:\n" + @resources.map { |resource| ' ' + resource.inspect }.join("\n") + "\n"\
172
+ "Area:\n" + @areas.map { |area| " #{area}" }.join("\n") + "\n"
171
173
  RCAP.format_lines_for_inspect('INFO', info_inspect)
172
174
  end
173
175
 
@@ -176,14 +178,14 @@ module RCAP
176
178
  #
177
179
  # @return [String]
178
180
  def to_s
179
- "#{ @event }(#{ @urgency }/#{ @severity }/#{ @certainty })"
181
+ "#{@event}(#{@urgency}/#{@severity}/#{@certainty})"
180
182
  end
181
183
 
182
184
  RESPONSE_TYPES_YAML = 'Response Types'
183
185
 
184
186
  # @return [Hash]
185
187
  def to_yaml_data
186
- parameter_to_hash = lambda { |hash, parameter| hash.merge(parameter.name => parameter.value) }
188
+ parameter_to_hash = ->(hash, parameter) { hash.merge(parameter.name => parameter.value) }
187
189
 
188
190
  RCAP.attribute_values_to_hash([LANGUAGE_YAML, @language],
189
191
  [CATEGORIES_YAML, @categories],
@@ -244,10 +246,10 @@ module RCAP
244
246
  [INSTRUCTION_KEY, @instruction],
245
247
  [WEB_KEY, @web],
246
248
  [CONTACT_KEY, @contact],
247
- [RESOURCES_KEY, @resources.map { |resource| resource.to_h }],
248
- [EVENT_CODES_KEY, @event_codes.map { |event_code| event_code.to_h }],
249
- [PARAMETERS_KEY, @parameters.map { |parameter| parameter.to_h }],
250
- [AREAS_KEY, @areas.map { |area| area.to_h }])
249
+ [RESOURCES_KEY, @resources.map(&:to_h)],
250
+ [EVENT_CODES_KEY, @event_codes.map(&:to_h)],
251
+ [PARAMETERS_KEY, @parameters.map(&:to_h)],
252
+ [AREAS_KEY, @areas.map(&:to_h)])
251
253
  end
252
254
 
253
255
  # @param [Hash] info_hash