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.
- checksums.yaml +5 -5
- data/.ruby-version +1 -1
- data/lib/rcap.rb +2 -0
- data/lib/rcap/alert.rb +4 -2
- data/lib/rcap/base/alert.rb +57 -55
- data/lib/rcap/base/area.rb +19 -13
- data/lib/rcap/base/circle.rb +6 -4
- data/lib/rcap/base/event_code.rb +2 -0
- data/lib/rcap/base/geocode.rb +2 -0
- data/lib/rcap/base/info.rb +65 -59
- data/lib/rcap/base/parameter.rb +6 -4
- data/lib/rcap/base/point.rb +4 -2
- data/lib/rcap/base/polygon.rb +8 -6
- data/lib/rcap/base/resource.rb +9 -9
- data/lib/rcap/cap_1_0/alert.rb +22 -20
- data/lib/rcap/cap_1_0/area.rb +2 -0
- data/lib/rcap/cap_1_0/circle.rb +2 -0
- data/lib/rcap/cap_1_0/event_code.rb +3 -1
- data/lib/rcap/cap_1_0/geocode.rb +3 -1
- data/lib/rcap/cap_1_0/info.rb +3 -1
- data/lib/rcap/cap_1_0/parameter.rb +3 -1
- data/lib/rcap/cap_1_0/point.rb +2 -0
- data/lib/rcap/cap_1_0/polygon.rb +2 -0
- data/lib/rcap/cap_1_0/resource.rb +2 -0
- data/lib/rcap/cap_1_1/alert.rb +4 -2
- data/lib/rcap/cap_1_1/area.rb +2 -0
- data/lib/rcap/cap_1_1/circle.rb +2 -0
- data/lib/rcap/cap_1_1/event_code.rb +3 -1
- data/lib/rcap/cap_1_1/geocode.rb +3 -1
- data/lib/rcap/cap_1_1/info.rb +34 -32
- data/lib/rcap/cap_1_1/parameter.rb +2 -0
- data/lib/rcap/cap_1_1/point.rb +2 -0
- data/lib/rcap/cap_1_1/polygon.rb +2 -0
- data/lib/rcap/cap_1_1/resource.rb +6 -4
- data/lib/rcap/cap_1_2/alert.rb +4 -2
- data/lib/rcap/cap_1_2/area.rb +2 -0
- data/lib/rcap/cap_1_2/circle.rb +2 -0
- data/lib/rcap/cap_1_2/event_code.rb +3 -1
- data/lib/rcap/cap_1_2/geocode.rb +3 -1
- data/lib/rcap/cap_1_2/info.rb +42 -38
- data/lib/rcap/cap_1_2/parameter.rb +2 -0
- data/lib/rcap/cap_1_2/point.rb +2 -0
- data/lib/rcap/cap_1_2/polygon.rb +2 -0
- data/lib/rcap/cap_1_2/resource.rb +8 -5
- data/lib/rcap/config.rb +2 -0
- data/lib/rcap/custom_validators.rb +11 -11
- data/lib/rcap/extensions/array.rb +2 -0
- data/lib/rcap/extensions/date.rb +3 -1
- data/lib/rcap/extensions/date_time.rb +4 -1
- data/lib/rcap/extensions/float.rb +2 -0
- data/lib/rcap/extensions/integer.rb +2 -0
- data/lib/rcap/extensions/nil_class.rb +2 -0
- data/lib/rcap/extensions/string.rb +3 -1
- data/lib/rcap/extensions/time.rb +3 -0
- data/lib/rcap/formatters/yaml.rb +3 -2
- data/lib/rcap/info.rb +2 -0
- data/lib/rcap/utilities.rb +7 -9
- data/lib/rcap/validation.rb +11 -9
- data/lib/rcap/version.rb +3 -1
- metadata +3 -4
data/lib/rcap/base/parameter.rb
CHANGED
@@ -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:#{
|
18
|
-
NAME_XPATH = "cap:#{
|
19
|
-
VALUE_XPATH = "cap:#{
|
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
|
-
"#{
|
45
|
+
"#{@name}: #{@value}"
|
44
46
|
end
|
45
47
|
|
46
48
|
# Returns a string representation of the parameter of the form
|
data/lib/rcap/base/point.rb
CHANGED
@@ -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
|
-
"#{
|
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
|
-
|
73
|
+
[].tap do |array|
|
72
74
|
array[LATTITUDE_INDEX] = lattitude
|
73
75
|
array[LONGITUDE_INDEX] = longitude
|
74
76
|
end
|
data/lib/rcap/base/polygon.rb
CHANGED
@@ -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:#{
|
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
|
-
"(#{
|
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
|
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
|
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
|
129
|
+
{ POINTS_KEY => @points.map(&:to_a) }
|
128
130
|
end
|
129
131
|
end
|
130
132
|
end
|
data/lib/rcap/base/resource.rb
CHANGED
@@ -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:#{
|
27
|
-
MIME_TYPE_XPATH = "cap:#{
|
28
|
-
SIZE_XPATH = "cap:#{
|
29
|
-
URI_XPATH = "cap:#{
|
30
|
-
DIGEST_XPATH = "cap:#{
|
31
|
-
RESOURCE_DESC_XPATH = "cap:#{
|
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]
|
data/lib/rcap/cap_1_0/alert.rb
CHANGED
@@ -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
|
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: #{
|
65
|
-
"Identifier: #{
|
66
|
-
"Sender: #{
|
67
|
-
"Sent: #{
|
68
|
-
"Status: #{
|
69
|
-
"Message Type: #{
|
70
|
-
"Password: #{
|
71
|
-
"Source: #{
|
72
|
-
"Scope: #{
|
73
|
-
"Restriction: #{
|
74
|
-
"Addresses: #{
|
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: #{
|
78
|
-
|
79
|
-
|
80
|
-
"Incidents: #{
|
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
|
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
|
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
|
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
|
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
|
data/lib/rcap/cap_1_0/area.rb
CHANGED
data/lib/rcap/cap_1_0/circle.rb
CHANGED
@@ -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:#{
|
8
|
+
XPATH = "cap:#{XML_ELEMENT_NAME}"
|
7
9
|
|
8
10
|
# @return [String]
|
9
11
|
def xmlns
|
data/lib/rcap/cap_1_0/geocode.rb
CHANGED
@@ -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:#{
|
8
|
+
XPATH = "cap:#{XML_ELEMENT_NAME}"
|
7
9
|
|
8
10
|
# @return [String]
|
9
11
|
def xmlns
|
data/lib/rcap/cap_1_0/info.rb
CHANGED
@@ -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: #{
|
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("#{
|
11
|
+
xml_element.add_text("#{@name}=#{@value}")
|
10
12
|
xml_element
|
11
13
|
end
|
12
14
|
|
data/lib/rcap/cap_1_0/point.rb
CHANGED
data/lib/rcap/cap_1_0/polygon.rb
CHANGED
data/lib/rcap/cap_1_1/alert.rb
CHANGED
@@ -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
|
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
|
data/lib/rcap/cap_1_1/area.rb
CHANGED
data/lib/rcap/cap_1_1/circle.rb
CHANGED
@@ -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:#{
|
8
|
+
XPATH = "cap:#{XML_ELEMENT_NAME}"
|
7
9
|
|
8
10
|
# @return [String]
|
9
11
|
def xmlns
|
data/lib/rcap/cap_1_1/geocode.rb
CHANGED
@@ -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:#{
|
8
|
+
XPATH = "cap:#{XML_ELEMENT_NAME}"
|
7
9
|
|
8
10
|
def xmlns
|
9
11
|
Alert::XMLNS
|
data/lib/rcap/cap_1_1/info.rb
CHANGED
@@ -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: #{
|
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:#{
|
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: #{
|
151
|
-
"Categories: #{
|
152
|
-
"Event: #{
|
153
|
-
"Response Types: #{
|
154
|
-
"Urgency: #{
|
155
|
-
"Severity: #{
|
156
|
-
"Certainty: #{
|
157
|
-
"Audience: #{
|
158
|
-
"Event Codes: #{
|
159
|
-
"Effective: #{
|
160
|
-
"Onset: #{
|
161
|
-
"Expires: #{
|
162
|
-
"Sender Name: #{
|
163
|
-
"Headline: #{
|
164
|
-
"Description:\n" +
|
165
|
-
"Instruction: #{
|
166
|
-
"Web: #{
|
167
|
-
"Contact: #{
|
168
|
-
"Parameters:\n" +
|
169
|
-
"Resources:\n" +
|
170
|
-
"Area:\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
|
-
"#{
|
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 =
|
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
|
248
|
-
[EVENT_CODES_KEY, @event_codes.map
|
249
|
-
[PARAMETERS_KEY, @parameters.map
|
250
|
-
[AREAS_KEY, @areas.map
|
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
|