rcap 1.3.1 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (88) hide show
  1. data/CHANGELOG.md +5 -0
  2. data/README.md +78 -151
  3. data/Rakefile +1 -1
  4. data/lib/rcap/alert.rb +2 -2
  5. data/lib/rcap/base/alert.rb +446 -0
  6. data/lib/rcap/base/area.rb +228 -0
  7. data/lib/rcap/base/circle.rb +121 -0
  8. data/lib/rcap/base/event_code.rb +6 -0
  9. data/lib/rcap/base/geocode.rb +6 -0
  10. data/lib/rcap/base/info.rb +498 -0
  11. data/lib/rcap/base/parameter.rb +88 -0
  12. data/lib/rcap/base/point.rb +87 -0
  13. data/lib/rcap/base/polygon.rb +120 -0
  14. data/lib/rcap/base/resource.rb +168 -0
  15. data/lib/rcap/cap_1_0/alert.rb +59 -342
  16. data/lib/rcap/cap_1_0/area.rb +13 -188
  17. data/lib/rcap/cap_1_0/circle.rb +2 -100
  18. data/lib/rcap/cap_1_0/event_code.rb +8 -3
  19. data/lib/rcap/cap_1_0/geocode.rb +8 -3
  20. data/lib/rcap/cap_1_0/info.rb +16 -468
  21. data/lib/rcap/cap_1_0/parameter.rb +9 -67
  22. data/lib/rcap/cap_1_0/point.rb +2 -61
  23. data/lib/rcap/cap_1_0/polygon.rb +5 -95
  24. data/lib/rcap/cap_1_0/resource.rb +4 -144
  25. data/lib/rcap/cap_1_1/alert.rb +7 -412
  26. data/lib/rcap/cap_1_1/area.rb +13 -188
  27. data/lib/rcap/cap_1_1/circle.rb +2 -100
  28. data/lib/rcap/cap_1_1/event_code.rb +8 -3
  29. data/lib/rcap/cap_1_1/geocode.rb +7 -3
  30. data/lib/rcap/cap_1_1/info.rb +127 -386
  31. data/lib/rcap/cap_1_1/parameter.rb +4 -76
  32. data/lib/rcap/cap_1_1/point.rb +2 -61
  33. data/lib/rcap/cap_1_1/polygon.rb +5 -95
  34. data/lib/rcap/cap_1_1/resource.rb +37 -143
  35. data/lib/rcap/cap_1_2/alert.rb +8 -413
  36. data/lib/rcap/cap_1_2/area.rb +13 -188
  37. data/lib/rcap/cap_1_2/circle.rb +2 -100
  38. data/lib/rcap/cap_1_2/event_code.rb +8 -3
  39. data/lib/rcap/cap_1_2/geocode.rb +8 -3
  40. data/lib/rcap/cap_1_2/info.rb +132 -419
  41. data/lib/rcap/cap_1_2/parameter.rb +4 -76
  42. data/lib/rcap/cap_1_2/point.rb +2 -61
  43. data/lib/rcap/cap_1_2/polygon.rb +5 -92
  44. data/lib/rcap/cap_1_2/resource.rb +31 -134
  45. data/lib/rcap/config.rb +3 -0
  46. data/lib/{extensions → rcap/extensions}/array.rb +1 -1
  47. data/lib/rcap/extensions/date.rb +11 -0
  48. data/lib/{extensions → rcap/extensions}/date_time.rb +2 -5
  49. data/lib/{extensions → rcap/extensions}/string.rb +1 -1
  50. data/lib/{extensions → rcap/extensions}/time.rb +2 -4
  51. data/lib/rcap/utilities.rb +11 -11
  52. data/lib/rcap/validations.rb +7 -2
  53. data/lib/rcap/version.rb +1 -1
  54. data/lib/rcap.rb +21 -4
  55. data/spec/alert_spec.rb +69 -37
  56. data/spec/cap_1_0/alert_spec.rb +46 -61
  57. data/spec/cap_1_0/area_spec.rb +77 -37
  58. data/spec/cap_1_0/circle_spec.rb +26 -6
  59. data/spec/cap_1_0/event_code_spec.rb +10 -3
  60. data/spec/cap_1_0/geocode_spec.rb +11 -4
  61. data/spec/cap_1_0/info_spec.rb +74 -77
  62. data/spec/cap_1_0/parameter_spec.rb +18 -5
  63. data/spec/cap_1_0/point_spec.rb +9 -2
  64. data/spec/cap_1_0/polygon_spec.rb +52 -9
  65. data/spec/cap_1_0/resource_spec.rb +28 -21
  66. data/spec/cap_1_1/alert_spec.rb +47 -60
  67. data/spec/cap_1_1/area_spec.rb +66 -43
  68. data/spec/cap_1_1/circle_spec.rb +29 -6
  69. data/spec/cap_1_1/event_code_spec.rb +11 -3
  70. data/spec/cap_1_1/geocode_spec.rb +11 -3
  71. data/spec/cap_1_1/info_spec.rb +262 -118
  72. data/spec/cap_1_1/parameter_spec.rb +12 -3
  73. data/spec/cap_1_1/point_spec.rb +8 -2
  74. data/spec/cap_1_1/polygon_spec.rb +57 -18
  75. data/spec/cap_1_1/resource_spec.rb +70 -20
  76. data/spec/cap_1_2/alert_spec.rb +97 -110
  77. data/spec/cap_1_2/area_spec.rb +59 -41
  78. data/spec/cap_1_2/circle_spec.rb +15 -8
  79. data/spec/cap_1_2/event_code_spec.rb +11 -3
  80. data/spec/cap_1_2/geocode_spec.rb +11 -3
  81. data/spec/cap_1_2/info_spec.rb +266 -119
  82. data/spec/cap_1_2/parameter_spec.rb +11 -3
  83. data/spec/cap_1_2/point_spec.rb +10 -3
  84. data/spec/cap_1_2/polygon_spec.rb +25 -10
  85. data/spec/cap_1_2/resource_spec.rb +33 -28
  86. data/spec/{utilities_spec.rb → extensions_spec.rb} +0 -0
  87. data/spec/validations_spec.rb +18 -2
  88. metadata +20 -46
@@ -1,108 +1,10 @@
1
1
  module RCAP
2
2
  module CAP_1_1
3
+
3
4
  # A Circle object is valid if
4
5
  # * it has a valid lattitude and longitude
5
6
  # * it has a radius with a value greater than zero
6
- class Circle < Point
7
- include Validation
8
-
9
- # @return [Numeric] Expresed in kilometers
10
- attr_accessor( :radius )
11
-
12
- validates_presence_of( :radius )
13
- validates_numericality_of( :radius , greater_than_or_equal: 0 )
14
-
15
- XML_ELEMENT_NAME = 'circle'
16
-
17
- XPATH = 'cap:circle'
18
-
19
- # @param [Hash] attributes
20
- # @option attributes [Numeric] :lattitude
21
- # @option attributes [Numeric] :longitude
22
- # @option attributes [Numeric] :radius
23
- def initialize( attributes = {} )
24
- super( attributes )
25
- @radius = attributes[ :radius ]
26
- end
27
-
28
- # Returns a string representation of the circle of the form
29
- # lattitude,longitude radius
30
- #
31
- # @return [String]
32
- def to_s
33
- "#{ @lattitude },#{ @longitude } #{ @radius }"
34
- end
35
-
36
- # @return [String]
37
- def inspect
38
- "(#{ self.to_s })"
39
- end
40
-
41
- # @return [REXML::Element]
42
- def to_xml_element
43
- xml_element = REXML::Element.new( XML_ELEMENT_NAME )
44
- xml_element.add_text( self.to_s )
45
- xml_element
46
- end
47
-
48
- # @return [String]
49
- def to_xml
50
- self.to_xml_element.to_s
51
- end
52
-
53
- # Parses a circle string of the form
54
- # lattitude,longitude radius
55
- #
56
- # @param [String] circle_string
57
- # @return [Array(Float,Float,Float)]
58
- def self.parse_circle_string( circle_string )
59
- coordinates, radius = circle_string.split( ' ' )
60
- lattitude, longitude = coordinates.split( ',' )
61
- [ lattitude, longitude, radius ].map{ |e| e.to_f }
62
- end
63
-
64
- # @param [REXML::Element] circle_xml_element
65
- # @return [Circle]
66
- def self.from_xml_element( circle_xml_element )
67
- lattitude, longitude, radius = self.parse_circle_string( circle_xml_element.text )
68
- circle = self.new( :lattitude => lattitude,
69
- :longitude => longitude,
70
- :radius => radius )
71
- end
72
-
73
- # Two circles are equivalent if their lattitude, longitude and radius are equal.
74
- #
75
- # @param [Circle] other
76
- # @return [true,false]
77
- def ==( other )
78
- [ @lattitude, @longitude, @radius ] == [ other.lattitude, other.longitude, other.radius ]
79
- end
80
-
81
- # @param [Array(Numeric, Numeric, Numeric)] circle_yaml_data lattitude, longitude, radius
82
- # @return [Circle]
83
- def self.from_yaml_data( circle_yaml_data )
84
- lattitude, longitude,radius = circle_yaml_data
85
- self.new( :lattitude => lattitude, :longitude => longitude, :radius => radius )
86
- end
87
-
88
- RADIUS_KEY = 'radius'
89
- LATTITUDE_KEY = 'lattitude'
90
- LONGITUDE_KEY = 'longitude'
91
-
92
- # @return [Hash]
93
- def to_h
94
- RCAP.attribute_values_to_hash( [ RADIUS_KEY, @radius ],
95
- [ LATTITUDE_KEY, @lattitude ],
96
- [ LONGITUDE_KEY, @longitude ])
97
- end
98
-
99
- # @param [Hash]
100
- # @return [Circle]
101
- def self.from_h( circle_hash )
102
- self.new( :radius => circle_hash[ RADIUS_KEY ],
103
- :lattitude => circle_hash[ LATTITUDE_KEY ],
104
- :longitude => circle_hash[ LONGITUDE_KEY ])
105
- end
7
+ class Circle < RCAP::Base::Circle
106
8
  end
107
9
  end
108
10
  end
@@ -1,9 +1,14 @@
1
1
  module RCAP
2
2
  module CAP_1_1
3
3
  # Subclass of {Parameter}
4
- class EventCode < Parameter
5
- XML_ELEMENT_NAME = 'eventCode'
6
- XPATH = "cap:#{ XML_ELEMENT_NAME }"
4
+ class EventCode < RCAP::Base::EventCode
5
+ XML_ELEMENT_NAME = 'eventCode'
6
+ XPATH = "cap:#{ XML_ELEMENT_NAME }"
7
+
8
+ # @return [String]
9
+ def xmlns
10
+ Alert::XMLNS
11
+ end
7
12
  end
8
13
  end
9
14
  end
@@ -1,9 +1,13 @@
1
1
  module RCAP
2
2
  module CAP_1_1
3
3
  # Subclass of {Parameter}
4
- class Geocode < Parameter
5
- XML_ELEMENT_NAME = 'geocode'
6
- XPATH = "cap:#{ XML_ELEMENT_NAME }"
4
+ class Geocode < RCAP::Base::Geocode
5
+ XML_ELEMENT_NAME = 'geocode'
6
+ XPATH = "cap:#{ XML_ELEMENT_NAME }"
7
+
8
+ def xmlns
9
+ Alert::XMLNS
10
+ end
7
11
  end
8
12
  end
9
13
  end