rcap 2.7.0 → 2.7.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|