rcap 2.5.0 → 2.7.4
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 -0
- data/CHANGELOG.md +18 -0
- data/README.md +1 -0
- data/lib/rcap.rb +3 -1
- data/lib/rcap/alert.rb +4 -2
- data/lib/rcap/base/alert.rb +70 -73
- data/lib/rcap/base/area.rb +19 -13
- data/lib/rcap/base/circle.rb +15 -4
- data/lib/rcap/base/event_code.rb +2 -0
- data/lib/rcap/base/geocode.rb +2 -0
- data/lib/rcap/base/info.rb +81 -75
- data/lib/rcap/base/parameter.rb +8 -6
- data/lib/rcap/base/point.rb +4 -2
- data/lib/rcap/base/polygon.rb +16 -8
- data/lib/rcap/base/resource.rb +13 -13
- data/lib/rcap/cap_1_0/alert.rb +36 -39
- 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 -2
- data/lib/rcap/cap_1_0/point.rb +2 -0
- data/lib/rcap/cap_1_0/polygon.rb +3 -1
- 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 +48 -46
- data/lib/rcap/cap_1_1/parameter.rb +2 -1
- data/lib/rcap/cap_1_1/point.rb +2 -0
- data/lib/rcap/cap_1_1/polygon.rb +3 -1
- data/lib/rcap/cap_1_1/resource.rb +12 -11
- 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 +55 -51
- data/lib/rcap/cap_1_2/parameter.rb +2 -1
- data/lib/rcap/cap_1_2/point.rb +2 -0
- data/lib/rcap/cap_1_2/polygon.rb +4 -2
- data/lib/rcap/cap_1_2/resource.rb +14 -12
- data/lib/rcap/config.rb +2 -0
- data/lib/rcap/custom_validators.rb +30 -27
- 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 +7 -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 +5 -0
- data/lib/rcap/info.rb +2 -0
- data/lib/rcap/utilities.rb +8 -10
- data/lib/rcap/validation.rb +19 -14
- data/lib/rcap/version.rb +3 -1
- data/rcap.gemspec +5 -5
- data/spec/alert_spec.rb +8 -9
- data/spec/cap_1_0/alert_spec.rb +4 -5
- data/spec/cap_1_0/area_spec.rb +7 -10
- data/spec/cap_1_0/circle_spec.rb +9 -0
- data/spec/cap_1_0/event_code_spec.rb +1 -1
- data/spec/cap_1_0/geocode_spec.rb +1 -1
- data/spec/cap_1_0/info_spec.rb +38 -38
- data/spec/cap_1_0/polygon_spec.rb +7 -5
- data/spec/cap_1_0/resource_spec.rb +6 -7
- data/spec/cap_1_1/alert_spec.rb +6 -7
- data/spec/cap_1_1/area_spec.rb +6 -8
- data/spec/cap_1_1/circle_spec.rb +9 -0
- data/spec/cap_1_1/info_spec.rb +26 -26
- data/spec/cap_1_1/parameter_spec.rb +1 -2
- data/spec/cap_1_1/polygon_spec.rb +12 -10
- data/spec/cap_1_1/resource_spec.rb +13 -13
- data/spec/cap_1_2/alert_spec.rb +7 -8
- data/spec/cap_1_2/area_spec.rb +6 -6
- data/spec/cap_1_2/circle_spec.rb +9 -0
- data/spec/cap_1_2/info_spec.rb +25 -26
- data/spec/cap_1_2/polygon_spec.rb +8 -0
- data/spec/cap_1_2/resource_spec.rb +13 -13
- data/spec/extensions_spec.rb +2 -2
- data/spec/spec_helper.rb +2 -2
- data/spec/validations_spec.rb +0 -1
- metadata +15 -15
- data/lib/rcap/extensions/fixnum.rb +0 -5
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,34 +27,28 @@ 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
|
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: #{
|
65
|
-
"Identifier: #{
|
66
|
-
"Sender: #{
|
67
|
-
"Sent: #{
|
68
|
-
"Status: #{
|
69
|
-
"Message Type: #{
|
70
|
-
"Password: #{
|
71
|
-
"Source: #{
|
72
|
-
"Scope: #{
|
73
|
-
"Restriction: #{
|
74
|
-
"Addresses: #{
|
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: #{
|
78
|
-
|
79
|
-
|
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
|
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
|
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
|
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
|
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
|
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,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("#{
|
11
|
+
xml_element.add_text("#{@name}=#{@value}")
|
11
12
|
xml_element
|
12
13
|
end
|
13
14
|
|
data/lib/rcap/cap_1_0/point.rb
CHANGED
data/lib/rcap/cap_1_0/polygon.rb
CHANGED
@@ -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]
|
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,35 +91,35 @@ 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
|
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)
|
116
|
-
xml_element.add_element(HEADLINE_ELEMENT_NAME).add_text(@headline)
|
117
|
-
xml_element.add_element(DESCRIPTION_ELEMENT_NAME).add_text(@description)
|
118
|
-
xml_element.add_element(INSTRUCTION_ELEMENT_NAME).add_text(@instruction)
|
119
|
-
xml_element.add_element(WEB_ELEMENT_NAME).add_text(@web)
|
120
|
-
xml_element.add_element(CONTACT_ELEMENT_NAME).add_text(@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: #{
|
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
|