rcap 2.7.0 → 2.7.3

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 (60) hide show
  1. checksums.yaml +5 -5
  2. data/.ruby-version +1 -1
  3. data/lib/rcap.rb +2 -0
  4. data/lib/rcap/alert.rb +4 -2
  5. data/lib/rcap/base/alert.rb +57 -55
  6. data/lib/rcap/base/area.rb +19 -13
  7. data/lib/rcap/base/circle.rb +6 -4
  8. data/lib/rcap/base/event_code.rb +2 -0
  9. data/lib/rcap/base/geocode.rb +2 -0
  10. data/lib/rcap/base/info.rb +65 -59
  11. data/lib/rcap/base/parameter.rb +6 -4
  12. data/lib/rcap/base/point.rb +4 -2
  13. data/lib/rcap/base/polygon.rb +8 -6
  14. data/lib/rcap/base/resource.rb +9 -9
  15. data/lib/rcap/cap_1_0/alert.rb +22 -20
  16. data/lib/rcap/cap_1_0/area.rb +2 -0
  17. data/lib/rcap/cap_1_0/circle.rb +2 -0
  18. data/lib/rcap/cap_1_0/event_code.rb +3 -1
  19. data/lib/rcap/cap_1_0/geocode.rb +3 -1
  20. data/lib/rcap/cap_1_0/info.rb +3 -1
  21. data/lib/rcap/cap_1_0/parameter.rb +3 -1
  22. data/lib/rcap/cap_1_0/point.rb +2 -0
  23. data/lib/rcap/cap_1_0/polygon.rb +2 -0
  24. data/lib/rcap/cap_1_0/resource.rb +2 -0
  25. data/lib/rcap/cap_1_1/alert.rb +4 -2
  26. data/lib/rcap/cap_1_1/area.rb +2 -0
  27. data/lib/rcap/cap_1_1/circle.rb +2 -0
  28. data/lib/rcap/cap_1_1/event_code.rb +3 -1
  29. data/lib/rcap/cap_1_1/geocode.rb +3 -1
  30. data/lib/rcap/cap_1_1/info.rb +34 -32
  31. data/lib/rcap/cap_1_1/parameter.rb +2 -0
  32. data/lib/rcap/cap_1_1/point.rb +2 -0
  33. data/lib/rcap/cap_1_1/polygon.rb +2 -0
  34. data/lib/rcap/cap_1_1/resource.rb +6 -4
  35. data/lib/rcap/cap_1_2/alert.rb +4 -2
  36. data/lib/rcap/cap_1_2/area.rb +2 -0
  37. data/lib/rcap/cap_1_2/circle.rb +2 -0
  38. data/lib/rcap/cap_1_2/event_code.rb +3 -1
  39. data/lib/rcap/cap_1_2/geocode.rb +3 -1
  40. data/lib/rcap/cap_1_2/info.rb +42 -38
  41. data/lib/rcap/cap_1_2/parameter.rb +2 -0
  42. data/lib/rcap/cap_1_2/point.rb +2 -0
  43. data/lib/rcap/cap_1_2/polygon.rb +2 -0
  44. data/lib/rcap/cap_1_2/resource.rb +8 -5
  45. data/lib/rcap/config.rb +2 -0
  46. data/lib/rcap/custom_validators.rb +11 -11
  47. data/lib/rcap/extensions/array.rb +2 -0
  48. data/lib/rcap/extensions/date.rb +3 -1
  49. data/lib/rcap/extensions/date_time.rb +4 -1
  50. data/lib/rcap/extensions/float.rb +2 -0
  51. data/lib/rcap/extensions/integer.rb +2 -0
  52. data/lib/rcap/extensions/nil_class.rb +2 -0
  53. data/lib/rcap/extensions/string.rb +3 -1
  54. data/lib/rcap/extensions/time.rb +3 -0
  55. data/lib/rcap/formatters/yaml.rb +3 -2
  56. data/lib/rcap/info.rb +2 -0
  57. data/lib/rcap/utilities.rb +7 -9
  58. data/lib/rcap/validation.rb +11 -9
  59. data/lib/rcap/version.rb +3 -1
  60. metadata +3 -4
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RCAP
2
4
  module Base
3
5
  class Parameter
@@ -14,9 +16,9 @@ module RCAP
14
16
  NAME_ELEMENT_NAME = 'valueName'
15
17
  VALUE_ELEMENT_NAME = 'value'
16
18
 
17
- XPATH = "cap:#{ XML_ELEMENT_NAME }"
18
- NAME_XPATH = "cap:#{ NAME_ELEMENT_NAME }"
19
- VALUE_XPATH = "cap:#{ VALUE_ELEMENT_NAME }"
19
+ XPATH = "cap:#{XML_ELEMENT_NAME}"
20
+ NAME_XPATH = "cap:#{NAME_ELEMENT_NAME}"
21
+ VALUE_XPATH = "cap:#{VALUE_ELEMENT_NAME}"
20
22
 
21
23
  # @param [Hash] attributes
22
24
  # @option attributes [Symbol] :name Parameter name
@@ -40,7 +42,7 @@ module RCAP
40
42
 
41
43
  # @return [String]
42
44
  def inspect
43
- "#{ @name }: #{ @value }"
45
+ "#{@name}: #{@value}"
44
46
  end
45
47
 
46
48
  # Returns a string representation of the parameter of the form
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RCAP
2
4
  module Base
3
5
  class Point
@@ -29,7 +31,7 @@ module RCAP
29
31
  #
30
32
  # @return [String]
31
33
  def to_s
32
- "#{ lattitude },#{ longitude }"
34
+ "#{lattitude},#{longitude}"
33
35
  end
34
36
 
35
37
  # @return [String]
@@ -68,7 +70,7 @@ module RCAP
68
70
 
69
71
  # @return [Array(Numeric, Numeric)]
70
72
  def to_a
71
- Array.new.tap do |array|
73
+ [].tap do |array|
72
74
  array[LATTITUDE_INDEX] = lattitude
73
75
  array[LONGITUDE_INDEX] = longitude
74
76
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RCAP
2
4
  module Base
3
5
  class Polygon
@@ -11,12 +13,12 @@ module RCAP
11
13
  validates_equality_of_first_and_last(:points, allow_empty: true)
12
14
 
13
15
  XML_ELEMENT_NAME = 'polygon'
14
- XPATH = "cap:#{ XML_ELEMENT_NAME }"
16
+ XPATH = "cap:#{XML_ELEMENT_NAME}"
15
17
 
16
18
  # @param [Hash] attributes
17
19
  # @option attributes [Array<Point>] :points Collection of {Point} objects
18
20
  def initialize
19
- @points = []
21
+ @points = []
20
22
  yield(self) if block_given?
21
23
  end
22
24
 
@@ -42,7 +44,7 @@ module RCAP
42
44
 
43
45
  # @return [String]
44
46
  def inspect
45
- "(#{ @points.map { |point| point.inspect }.join(', ')})"
47
+ "(#{@points.map(&:inspect).join(', ')})"
46
48
  end
47
49
 
48
50
  # @return [REXML::Element]
@@ -83,7 +85,7 @@ module RCAP
83
85
 
84
86
  # @return [Array<Array(Numeric,Numeric)>]
85
87
  def self.parse_polygon_string(polygon_string)
86
- polygon_string.split(' ').map { |coordinate_string| coordinate_string.split(',').map { |coordinate| coordinate.to_f } }
88
+ polygon_string.split(' ').map { |coordinate_string| coordinate_string.split(',').map(&:to_f) }
87
89
  end
88
90
 
89
91
  # @return [Polygon]
@@ -108,7 +110,7 @@ module RCAP
108
110
  to_yaml_data.to_yaml(options)
109
111
  end
110
112
 
111
- POINTS_KEY = 'points'
113
+ POINTS_KEY = 'points'
112
114
 
113
115
  # @return [Polygon]
114
116
  def self.from_h(polygon_hash)
@@ -124,7 +126,7 @@ module RCAP
124
126
 
125
127
  # @return [Hash]
126
128
  def to_h
127
- { POINTS_KEY => @points.map { |point| point.to_a } }
129
+ { POINTS_KEY => @points.map(&:to_a) }
128
130
  end
129
131
  end
130
132
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RCAP
2
4
  module Base
3
5
  class Resource
@@ -23,12 +25,12 @@ module RCAP
23
25
  DIGEST_ELEMENT_NAME = 'digest'
24
26
  RESOURCE_DESC_ELEMENT_NAME = 'resourceDesc'
25
27
 
26
- XPATH = "cap:#{ XML_ELEMENT_NAME }"
27
- MIME_TYPE_XPATH = "cap:#{ MIME_TYPE_ELEMENT_NAME }"
28
- SIZE_XPATH = "cap:#{ SIZE_ELEMENT_NAME }"
29
- URI_XPATH = "cap:#{ URI_ELEMENT_NAME }"
30
- DIGEST_XPATH = "cap:#{ DIGEST_ELEMENT_NAME }"
31
- RESOURCE_DESC_XPATH = "cap:#{ RESOURCE_DESC_ELEMENT_NAME }"
28
+ XPATH = "cap:#{XML_ELEMENT_NAME}"
29
+ MIME_TYPE_XPATH = "cap:#{MIME_TYPE_ELEMENT_NAME}"
30
+ SIZE_XPATH = "cap:#{SIZE_ELEMENT_NAME}"
31
+ URI_XPATH = "cap:#{URI_ELEMENT_NAME}"
32
+ DIGEST_XPATH = "cap:#{DIGEST_ELEMENT_NAME}"
33
+ RESOURCE_DESC_XPATH = "cap:#{RESOURCE_DESC_ELEMENT_NAME}"
32
34
 
33
35
  # @param [Hash{Symbol => Object}] attributes
34
36
  # @option attributes [String] :mime_type
@@ -86,9 +88,7 @@ module RCAP
86
88
  # If size is defined returns the size in kilobytes
87
89
  # @return [Float]
88
90
  def size_in_kb
89
- if @size
90
- @size.to_f / 1024
91
- end
91
+ @size.to_f / 1024 if @size
92
92
  end
93
93
 
94
94
  # @return [String]
@@ -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,7 +27,7 @@ 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
@@ -61,29 +63,29 @@ module RCAP
61
63
 
62
64
  # @return [String]
63
65
  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 }",
66
+ alert_inspect = ["CAP Version: #{CAP_VERSION}",
67
+ "Identifier: #{@identifier}",
68
+ "Sender: #{@sender}",
69
+ "Sent: #{@sent}",
70
+ "Status: #{@status}",
71
+ "Message Type: #{@msg_type}",
72
+ "Password: #{@password}",
73
+ "Source: #{@source}",
74
+ "Scope: #{@scope}",
75
+ "Restriction: #{@restriction}",
76
+ "Addresses: #{@addresses.to_s_for_cap}",
75
77
  'Codes:',
76
78
  @codes.map { |code| ' ' + code }.join("\n"),
77
- "Note: #{ @note }",
78
- "References:",
79
- @references.join("\n "),
80
- "Incidents: #{ @incidents.join(' ')}",
79
+ "Note: #{@note}",
80
+ 'References:',
81
+ @references.join("\n "),
82
+ "Incidents: #{@incidents.join(' ')}",
81
83
  'Information:',
82
84
  @infos.map { |info| ' ' + info.to_s }.join("\n")].join("\n")
83
85
  RCAP.format_lines_for_inspect('ALERT', alert_inspect)
84
86
  end
85
87
 
86
- PASSWORD_XPATH = "cap:#{ PASSWORD_ELEMENT_NAME }"
88
+ PASSWORD_XPATH = "cap:#{PASSWORD_ELEMENT_NAME}"
87
89
 
88
90
  # @param [REXML::Element] alert_xml_element
89
91
  # @return [RCAP::CAP_1_0::Alert]
@@ -93,7 +95,7 @@ module RCAP
93
95
  end
94
96
  end
95
97
 
96
- PASSWORD_YAML = 'Password'
98
+ PASSWORD_YAML = 'Password'
97
99
 
98
100
  # Returns a string containing the YAML representation of the alert.
99
101
  #
@@ -125,7 +127,7 @@ module RCAP
125
127
  end
126
128
  end
127
129
 
128
- PASSWORD_KEY = 'password'
130
+ PASSWORD_KEY = 'password'
129
131
 
130
132
  # Returns a Hash representation of an Alert object
131
133
  #
@@ -146,7 +148,7 @@ module RCAP
146
148
  [NOTE_KEY, @note],
147
149
  [REFERENCES_KEY, @references],
148
150
  [INCIDENTS_KEY, @incidents],
149
- [INFOS_KEY, @infos.map { |info| info.to_h }])
151
+ [INFOS_KEY, @infos.map(&:to_h)])
150
152
  end
151
153
 
152
154
  # 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,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RCAP
2
4
  module CAP_1_0
3
5
  # A Parameter object is valid if
@@ -6,7 +8,7 @@ module RCAP
6
8
  # @return [REXML::Element]
7
9
  def to_xml_element
8
10
  xml_element = REXML::Element.new(self.class::XML_ELEMENT_NAME)
9
- xml_element.add_text("#{ @name }=#{ @value }")
11
+ xml_element.add_text("#{@name}=#{@value}")
10
12
  xml_element
11
13
  end
12
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,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RCAP
2
4
  module CAP_1_0
3
5
  # A Polygon 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 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,7 +91,7 @@ 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
@@ -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