rcap 2.4.1 → 2.7.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (99) hide show
  1. checksums.yaml +5 -5
  2. data/.ruby-version +1 -0
  3. data/CHANGELOG.md +18 -0
  4. data/README.md +1 -0
  5. data/lib/rcap.rb +3 -1
  6. data/lib/rcap/alert.rb +30 -29
  7. data/lib/rcap/base/alert.rb +208 -205
  8. data/lib/rcap/base/area.rb +95 -91
  9. data/lib/rcap/base/circle.rb +45 -34
  10. data/lib/rcap/base/event_code.rb +2 -0
  11. data/lib/rcap/base/geocode.rb +2 -0
  12. data/lib/rcap/base/info.rb +273 -272
  13. data/lib/rcap/base/parameter.rb +29 -28
  14. data/lib/rcap/base/point.rb +26 -24
  15. data/lib/rcap/base/polygon.rb +43 -35
  16. data/lib/rcap/base/resource.rb +65 -65
  17. data/lib/rcap/cap_1_0/alert.rb +85 -86
  18. data/lib/rcap/cap_1_0/area.rb +2 -2
  19. data/lib/rcap/cap_1_0/circle.rb +2 -1
  20. data/lib/rcap/cap_1_0/event_code.rb +3 -1
  21. data/lib/rcap/cap_1_0/geocode.rb +3 -1
  22. data/lib/rcap/cap_1_0/info.rb +3 -3
  23. data/lib/rcap/cap_1_0/parameter.rb +13 -13
  24. data/lib/rcap/cap_1_0/point.rb +2 -1
  25. data/lib/rcap/cap_1_0/polygon.rb +3 -3
  26. data/lib/rcap/cap_1_0/resource.rb +2 -3
  27. data/lib/rcap/cap_1_1/alert.rb +6 -6
  28. data/lib/rcap/cap_1_1/area.rb +2 -2
  29. data/lib/rcap/cap_1_1/circle.rb +2 -1
  30. data/lib/rcap/cap_1_1/event_code.rb +3 -1
  31. data/lib/rcap/cap_1_1/geocode.rb +3 -1
  32. data/lib/rcap/cap_1_1/info.rb +125 -132
  33. data/lib/rcap/cap_1_1/parameter.rb +2 -3
  34. data/lib/rcap/cap_1_1/point.rb +2 -1
  35. data/lib/rcap/cap_1_1/polygon.rb +3 -3
  36. data/lib/rcap/cap_1_1/resource.rb +37 -38
  37. data/lib/rcap/cap_1_2/alert.rb +6 -6
  38. data/lib/rcap/cap_1_2/area.rb +2 -2
  39. data/lib/rcap/cap_1_2/circle.rb +2 -1
  40. data/lib/rcap/cap_1_2/event_code.rb +3 -1
  41. data/lib/rcap/cap_1_2/geocode.rb +3 -1
  42. data/lib/rcap/cap_1_2/info.rb +120 -123
  43. data/lib/rcap/cap_1_2/parameter.rb +2 -3
  44. data/lib/rcap/cap_1_2/point.rb +2 -1
  45. data/lib/rcap/cap_1_2/polygon.rb +4 -4
  46. data/lib/rcap/cap_1_2/resource.rb +38 -38
  47. data/lib/rcap/config.rb +5 -3
  48. data/lib/rcap/custom_validators.rb +75 -78
  49. data/lib/rcap/extensions/array.rb +3 -1
  50. data/lib/rcap/extensions/date.rb +3 -1
  51. data/lib/rcap/extensions/date_time.rb +5 -2
  52. data/lib/rcap/extensions/float.rb +2 -0
  53. data/lib/rcap/extensions/integer.rb +7 -0
  54. data/lib/rcap/extensions/nil_class.rb +2 -0
  55. data/lib/rcap/extensions/string.rb +6 -4
  56. data/lib/rcap/extensions/time.rb +5 -3
  57. data/lib/rcap/formatters/yaml.rb +5 -0
  58. data/lib/rcap/info.rb +6 -5
  59. data/lib/rcap/utilities.rb +27 -30
  60. data/lib/rcap/validation.rb +22 -21
  61. data/lib/rcap/version.rb +3 -1
  62. data/rcap.gemspec +5 -5
  63. data/spec/alert_spec.rb +141 -141
  64. data/spec/cap_1_0/alert_spec.rb +92 -94
  65. data/spec/cap_1_0/area_spec.rb +86 -86
  66. data/spec/cap_1_0/circle_spec.rb +48 -39
  67. data/spec/cap_1_0/event_code_spec.rb +15 -15
  68. data/spec/cap_1_0/geocode_spec.rb +16 -16
  69. data/spec/cap_1_0/info_spec.rb +175 -177
  70. data/spec/cap_1_0/parameter_spec.rb +27 -27
  71. data/spec/cap_1_0/point_spec.rb +18 -18
  72. data/spec/cap_1_0/polygon_spec.rb +43 -41
  73. data/spec/cap_1_0/resource_spec.rb +63 -64
  74. data/spec/cap_1_1/alert_spec.rb +107 -109
  75. data/spec/cap_1_1/area_spec.rb +90 -90
  76. data/spec/cap_1_1/circle_spec.rb +43 -34
  77. data/spec/cap_1_1/event_code_spec.rb +15 -16
  78. data/spec/cap_1_1/geocode_spec.rb +16 -16
  79. data/spec/cap_1_1/info_spec.rb +194 -196
  80. data/spec/cap_1_1/parameter_spec.rb +17 -17
  81. data/spec/cap_1_1/point_spec.rb +18 -18
  82. data/spec/cap_1_1/polygon_spec.rb +43 -41
  83. data/spec/cap_1_1/resource_spec.rb +106 -107
  84. data/spec/cap_1_2/alert_spec.rb +98 -99
  85. data/spec/cap_1_2/area_spec.rb +90 -90
  86. data/spec/cap_1_2/circle_spec.rb +52 -43
  87. data/spec/cap_1_2/event_code_spec.rb +19 -20
  88. data/spec/cap_1_2/geocode_spec.rb +20 -20
  89. data/spec/cap_1_2/info_spec.rb +196 -198
  90. data/spec/cap_1_2/parameter_spec.rb +19 -19
  91. data/spec/cap_1_2/point_spec.rb +21 -21
  92. data/spec/cap_1_2/polygon_spec.rb +55 -47
  93. data/spec/cap_1_2/resource_spec.rb +96 -97
  94. data/spec/extensions_spec.rb +29 -29
  95. data/spec/info_spec.rb +15 -15
  96. data/spec/spec_helper.rb +3 -3
  97. data/spec/validations_spec.rb +73 -73
  98. metadata +12 -11
  99. data/lib/rcap/extensions/fixnum.rb +0 -5
@@ -1,46 +1,48 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RCAP
2
4
  module Base
3
5
  class Parameter
4
6
  include Validation
5
7
 
6
- validates_presence_of( :name, :value )
8
+ validates_presence_of(:name)
7
9
 
8
10
  # @return [String]
9
- attr_accessor( :name )
11
+ attr_accessor(:name)
10
12
  # @return [String]
11
- attr_accessor( :value )
13
+ attr_accessor(:value)
12
14
 
13
- XML_ELEMENT_NAME = "parameter"
14
- NAME_ELEMENT_NAME = "valueName"
15
- VALUE_ELEMENT_NAME = "value"
15
+ XML_ELEMENT_NAME = 'parameter'
16
+ NAME_ELEMENT_NAME = 'valueName'
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
23
25
  # @option attributes [Symbol] :value Parameter value
24
26
  def initialize
25
- yield( self ) if block_given?
27
+ yield(self) if block_given?
26
28
  end
27
29
 
28
30
  # @return [REXML::Element]
29
31
  def to_xml_element
30
- xml_element = REXML::Element.new( self.class::XML_ELEMENT_NAME )
31
- xml_element.add_element( self.class::NAME_ELEMENT_NAME ).add_text( @name )
32
- xml_element.add_element( self.class::VALUE_ELEMENT_NAME ).add_text( @value )
32
+ xml_element = REXML::Element.new(self.class::XML_ELEMENT_NAME)
33
+ xml_element.add_element(self.class::NAME_ELEMENT_NAME).add_text(@name)
34
+ xml_element.add_element(self.class::VALUE_ELEMENT_NAME).add_text(@value)
33
35
  xml_element
34
36
  end
35
37
 
36
38
  # @return [String]
37
39
  def to_xml
38
- self.to_xml_element.to_s
40
+ to_xml_element.to_s
39
41
  end
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
@@ -48,41 +50,40 @@ module RCAP
48
50
  #
49
51
  # @return [String]
50
52
  def to_s
51
- self.inspect
53
+ inspect
52
54
  end
53
55
 
54
56
  # Two parameters are equivalent if they have the same name and value.
55
57
  #
56
58
  # @param [Parameter] other
57
59
  # @return [true, false]
58
- def ==( other )
59
- [ @name, @value ] == [ other.name, other.value ]
60
+ def ==(other)
61
+ [@name, @value] == [other.name, other.value]
60
62
  end
61
63
 
62
64
  # @param [REXML::Element] parameter_xml_element
63
65
  # @return [Parameter]
64
- def self.from_xml_element( parameter_xml_element )
65
- self.new do |parameter|
66
- parameter.name = RCAP.xpath_text( parameter_xml_element, self::NAME_XPATH, parameter.xmlns )
67
- parameter.value = RCAP.xpath_text( parameter_xml_element, self::VALUE_XPATH, parameter.xmlns )
66
+ def self.from_xml_element(parameter_xml_element)
67
+ new do |parameter|
68
+ parameter.name = RCAP.xpath_text(parameter_xml_element, self::NAME_XPATH, parameter.xmlns)
69
+ parameter.value = RCAP.xpath_text(parameter_xml_element, self::VALUE_XPATH, parameter.xmlns)
68
70
  end
69
71
  end
70
72
 
71
73
  # @return [Hash]
72
74
  def to_h
73
- RCAP.attribute_values_to_hash( [ @name, @value ])
75
+ RCAP.attribute_values_to_hash([@name, @value])
74
76
  end
75
77
 
76
78
  # @param [Hash] hash
77
79
  # @return [Parameter]
78
- def self.from_h( hash )
80
+ def self.from_h(hash)
79
81
  key = hash.keys.first
80
- self.new do |parameter|
81
- parameter.name = RCAP.strip_if_given( key )
82
- parameter.value = RCAP.strip_if_given( hash[ key ])
82
+ new do |parameter|
83
+ parameter.name = RCAP.strip_if_given(key)
84
+ parameter.value = RCAP.strip_if_given(hash[key])
83
85
  end
84
86
  end
85
87
  end
86
88
  end
87
89
  end
88
-
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RCAP
2
4
  module Base
3
5
  class Point
@@ -6,22 +8,22 @@ module RCAP
6
8
  MAX_LONGITUDE = 180
7
9
  MIN_LONGITUDE = -180
8
10
  MAX_LATTITUDE = 90
9
- MIN_LATTITUDE= -90
11
+ MIN_LATTITUDE = -90
10
12
 
11
13
  # @return [Numeric]
12
- attr_accessor( :lattitude )
14
+ attr_accessor(:lattitude)
13
15
  # @return [Numeric]
14
- attr_accessor( :longitude )
16
+ attr_accessor(:longitude)
15
17
 
16
- validates_numericality_of( :lattitude, :longitude )
17
- validates_inclusion_of( :lattitude, :in => MIN_LATTITUDE..MAX_LATTITUDE )
18
- validates_inclusion_of( :longitude, :in => MIN_LONGITUDE..MAX_LONGITUDE)
18
+ validates_numericality_of(:lattitude, :longitude)
19
+ validates_inclusion_of(:lattitude, in: MIN_LATTITUDE..MAX_LATTITUDE)
20
+ validates_inclusion_of(:longitude, in: MIN_LONGITUDE..MAX_LONGITUDE)
19
21
 
20
22
  # @param [Hash] attributes
21
23
  # @option attributes [Numeric] :lattitude
22
24
  # @option attributes [Numeric] :longitude
23
25
  def initialize
24
- yield( self ) if block_given?
26
+ yield(self) if block_given?
25
27
  end
26
28
 
27
29
  # Returns a string representation of the point of the form
@@ -29,20 +31,20 @@ module RCAP
29
31
  #
30
32
  # @return [String]
31
33
  def to_s
32
- "#{ self.lattitude },#{ self.longitude }"
34
+ "#{lattitude},#{longitude}"
33
35
  end
34
36
 
35
37
  # @return [String]
36
38
  def inspect
37
- '('+self.to_s+')'
39
+ '(' + to_s + ')'
38
40
  end
39
41
 
40
42
  # Two points are equivalent if they have the same lattitude and longitude
41
43
  #
42
44
  # @param [Point] other
43
45
  # @return [true, false]
44
- def ==( other )
45
- [ self.lattitude, self.longitude ] == [ other.lattitude, other.longitude ]
46
+ def ==(other)
47
+ [lattitude, longitude] == [other.lattitude, other.longitude]
46
48
  end
47
49
 
48
50
  LATTITUDE_KEY = 'lattitude'
@@ -50,16 +52,16 @@ module RCAP
50
52
 
51
53
  # @return [Hash]
52
54
  def to_h
53
- RCAP.attribute_values_to_hash( [ LATTITUDE_KEY, self.lattitude ],
54
- [ LONGITUDE_KEY, self.longitude ])
55
+ RCAP.attribute_values_to_hash([LATTITUDE_KEY, lattitude],
56
+ [LONGITUDE_KEY, longitude])
55
57
  end
56
58
 
57
59
  # @param [Hash] point_hash
58
60
  # @return [Point]
59
- def self.from_h( point_hash )
60
- self.new do |point|
61
- point.lattitude = point_hash[ LATTITUDE_KEY ].to_f
62
- point.longitude = point_hash[ LONGITUDE_KEY ].to_f
61
+ def self.from_h(point_hash)
62
+ new do |point|
63
+ point.lattitude = point_hash[LATTITUDE_KEY].to_f
64
+ point.longitude = point_hash[LONGITUDE_KEY].to_f
63
65
  end
64
66
  end
65
67
 
@@ -68,18 +70,18 @@ module RCAP
68
70
 
69
71
  # @return [Array(Numeric, Numeric)]
70
72
  def to_a
71
- Array.new.tap do |array|
72
- array[ LATTITUDE_INDEX ] = self.lattitude
73
- array[ LONGITUDE_INDEX ] = self.longitude
73
+ [].tap do |array|
74
+ array[LATTITUDE_INDEX] = lattitude
75
+ array[LONGITUDE_INDEX] = longitude
74
76
  end
75
77
  end
76
78
 
77
79
  # @param [Array(Numeric, Numeric)] point_array
78
80
  # @return [Point]
79
- def self.from_a( point_array )
80
- self.new do |point|
81
- point.lattitude = point_array[ LATTITUDE_INDEX ].to_f
82
- point.longitude = point_array[ LONGITUDE_INDEX ].to_f
81
+ def self.from_a(point_array)
82
+ new do |point|
83
+ point.lattitude = point_array[LATTITUDE_INDEX].to_f
84
+ point.longitude = point_array[LONGITUDE_INDEX].to_f
83
85
  end
84
86
  end
85
87
  end
@@ -1,56 +1,64 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RCAP
2
4
  module Base
3
5
  class Polygon
4
6
  include Validation
5
7
 
6
8
  # @return [Array<Point>] Collection of {Point} objects
7
- attr_reader( :points )
9
+ attr_reader(:points)
8
10
 
9
- validates_collection_of( :points )
10
- validates_length_of( :points, :minimum => 3 )
11
- validates_equality_of_first_and_last( :points )
11
+ validates_collection_of(:points)
12
+ validates_length_of(:points, minimum: 3, allow_blank: true)
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 = []
20
- yield( self ) if block_given?
21
+ @points = []
22
+ yield(self) if block_given?
21
23
  end
22
24
 
23
25
  def add_point
24
- point = self.point_class.new
25
- yield( point ) if block_given?
26
- self.points << point
26
+ point = point_class.new
27
+ yield(point) if block_given?
28
+ points << point
27
29
  point
28
30
  end
29
31
 
32
+ # Returns GeoJSON representation of the polygon
33
+ def to_geojson
34
+ coordinates = @points.map { |point| [point.longitude, point.lattitude] }
35
+ { 'type' => 'Polygon', 'coordinates' => [coordinates] }.to_json
36
+ end
37
+
30
38
  # Returns a string representation of the polygon of the form
31
39
  # points[0] points[1] points[2] ...
32
40
  # where each point is formatted with Point#to_s
33
41
  def to_s
34
- @points.join( ' ' )
42
+ @points.join(' ')
35
43
  end
36
44
 
37
45
  # @return [String]
38
46
  def inspect
39
- "(#{ @points.map{|point| point.inspect}.join(', ')})"
47
+ "(#{@points.map(&:inspect).join(', ')})"
40
48
  end
41
49
 
42
50
  # @return [REXML::Element]
43
51
  def to_xml_element
44
- xml_element = REXML::Element.new( XML_ELEMENT_NAME )
45
- xml_element.add_text( self.to_s )
52
+ xml_element = REXML::Element.new(XML_ELEMENT_NAME)
53
+ xml_element.add_text(to_s)
46
54
  xml_element
47
55
  end
48
56
 
49
57
  # @return [Polygon]
50
- def self.from_xml_element( polygon_xml_element )
58
+ def self.from_xml_element(polygon_xml_element)
51
59
  if !polygon_xml_element.text.nil? && !polygon_xml_element.text.empty?
52
- coordinates = self.parse_polygon_string( polygon_xml_element.text )
53
- self.new do |polygon|
60
+ coordinates = parse_polygon_string(polygon_xml_element.text)
61
+ new do |polygon|
54
62
  coordinates.each do |lattitude, longitude|
55
63
  polygon.add_point do |point|
56
64
  point.lattitude = lattitude.to_f
@@ -59,31 +67,31 @@ module RCAP
59
67
  end
60
68
  end
61
69
  else
62
- self.new
70
+ new
63
71
  end
64
72
  end
65
73
 
66
74
  # @return [String]
67
75
  def to_xml
68
- self.to_xml_element.to_s
76
+ to_xml_element.to_s
69
77
  end
70
78
 
71
79
  # Two polygons are equivalent if their collection of points is equivalent.
72
80
  #
73
81
  # @return [true,false]
74
- def ==( other )
82
+ def ==(other)
75
83
  @points == other.points
76
84
  end
77
85
 
78
86
  # @return [Array<Array(Numeric,Numeric)>]
79
- def self.parse_polygon_string( polygon_string )
80
- polygon_string.split( ' ' ).map{ |coordinate_string| coordinate_string.split( ',' ).map{|coordinate| coordinate.to_f }}
87
+ def self.parse_polygon_string(polygon_string)
88
+ polygon_string.split(' ').map { |coordinate_string| coordinate_string.split(',').map(&:to_f) }
81
89
  end
82
90
 
83
91
  # @return [Polygon]
84
- def self.from_yaml_data( polygon_yaml_data )
85
- self.new do |polygon|
86
- Array( polygon_yaml_data ).each do |lattitude, longitude|
92
+ def self.from_yaml_data(polygon_yaml_data)
93
+ new do |polygon|
94
+ Array(polygon_yaml_data).each do |lattitude, longitude|
87
95
  polygon.add_point do |point|
88
96
  point.lattitude = lattitude.to_f
89
97
  point.longitude = longitude.to_f
@@ -94,23 +102,23 @@ module RCAP
94
102
 
95
103
  # @return [Hash]
96
104
  def to_yaml_data
97
- @points.map{ |point| [ point.lattitude, point.longitude ]}
105
+ @points.map { |point| [point.lattitude, point.longitude] }
98
106
  end
99
107
 
100
108
  # @return [String]
101
- def to_yaml( options = {} )
102
- self.to_yaml_data.to_yaml( options )
109
+ def to_yaml(options = {})
110
+ to_yaml_data.to_yaml(options)
103
111
  end
104
112
 
105
- POINTS_KEY = 'points'
113
+ POINTS_KEY = 'points'
106
114
 
107
115
  # @return [Polygon]
108
- def self.from_h( polygon_hash )
109
- self.new do |polygon|
110
- Array( polygon_hash[ POINTS_KEY ]).each do |point_array|
116
+ def self.from_h(polygon_hash)
117
+ new do |polygon|
118
+ Array(polygon_hash[POINTS_KEY]).each do |point_array|
111
119
  polygon.add_point do |point|
112
- point.lattitude = point_array[ Point::LATTITUDE_INDEX ].to_f
113
- point.longitude = point_array[ Point::LONGITUDE_INDEX ].to_f
120
+ point.lattitude = point_array[Point::LATTITUDE_INDEX].to_f
121
+ point.longitude = point_array[Point::LONGITUDE_INDEX].to_f
114
122
  end
115
123
  end
116
124
  end
@@ -118,7 +126,7 @@ module RCAP
118
126
 
119
127
  # @return [Hash]
120
128
  def to_h
121
- { POINTS_KEY => @points.map{ |point| point.to_a }}
129
+ { POINTS_KEY => @points.map(&:to_a) }
122
130
  end
123
131
  end
124
132
  end
@@ -1,20 +1,22 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RCAP
2
4
  module Base
3
5
  class Resource
4
6
  include Validation
5
7
 
6
8
  # @return [String] Resource Description
7
- attr_accessor( :resource_desc )
9
+ attr_accessor(:resource_desc)
8
10
  # @return [String]
9
- attr_accessor( :mime_type )
11
+ attr_accessor(:mime_type)
10
12
  # @return [Integer] Expressed in bytes
11
- attr_accessor( :size )
13
+ attr_accessor(:size)
12
14
  # @return [String] Resource location
13
- attr_accessor( :uri )
15
+ attr_accessor(:uri)
14
16
  # @return [String] SHA-1 hash of contents of resource
15
- attr_accessor( :digest )
17
+ attr_accessor(:digest)
16
18
 
17
- validates_presence_of( :resource_desc )
19
+ validates_presence_of(:resource_desc)
18
20
 
19
21
  XML_ELEMENT_NAME = 'resource'
20
22
  MIME_TYPE_ELEMENT_NAME = 'mimeType'
@@ -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
@@ -37,29 +39,29 @@ module RCAP
37
39
  # @option attributes [String] :digest
38
40
  # @option attributes [String] :resource_desc
39
41
  def initialize
40
- yield( self ) if block_given?
42
+ yield(self) if block_given?
41
43
  end
42
44
 
43
45
  # @return [REXML::Element]
44
46
  def to_xml_element
45
- xml_element = REXML::Element.new( XML_ELEMENT_NAME )
46
- xml_element.add_element( RESOURCE_DESC_ELEMENT_NAME ).add_text( @resource_desc )
47
- xml_element.add_element( MIME_TYPE_ELEMENT_NAME ).add_text( @mime_type ) if @mime_type
48
- xml_element.add_element( SIZE_ELEMENT_NAME ).add_text( @size.to_s ) if @size
49
- xml_element.add_element( URI_ELEMENT_NAME ).add_text( @uri ) if @uri
50
- xml_element.add_element( DIGEST_ELEMENT_NAME ).add_text( @digest ) if @digest
47
+ xml_element = REXML::Element.new(XML_ELEMENT_NAME)
48
+ xml_element.add_element(RESOURCE_DESC_ELEMENT_NAME).add_text(@resource_desc)
49
+ xml_element.add_element(MIME_TYPE_ELEMENT_NAME).add_text(@mime_type) if @mime_type
50
+ xml_element.add_element(SIZE_ELEMENT_NAME).add_text(@size.to_s) if @size
51
+ xml_element.add_element(URI_ELEMENT_NAME).add_text(@uri) if @uri
52
+ xml_element.add_element(DIGEST_ELEMENT_NAME).add_text(@digest) if @digest
51
53
  xml_element
52
54
  end
53
55
 
54
56
  # @param [REXML::Element] resource_xml_element
55
57
  # @return [Resource]
56
- def self.from_xml_element( resource_xml_element )
57
- resource = self.new do |resource|
58
- resource.resource_desc = RCAP.xpath_text( resource_xml_element, RESOURCE_DESC_XPATH, resource.xmlns )
59
- resource.uri = RCAP.xpath_text( resource_xml_element, URI_XPATH, resource.xmlns )
60
- resource.mime_type = RCAP.xpath_text( resource_xml_element, MIME_TYPE_XPATH, resource.xmlns )
61
- resource.size = RCAP.xpath_text( resource_xml_element, SIZE_XPATH, resource.xmlns ).to_i
62
- resource.digest = RCAP.xpath_text( resource_xml_element, DIGEST_XPATH, resource.xmlns )
58
+ def self.from_xml_element(resource_xml_element)
59
+ resource = new do |resource|
60
+ resource.resource_desc = RCAP.xpath_text(resource_xml_element, RESOURCE_DESC_XPATH, resource.xmlns)
61
+ resource.uri = RCAP.xpath_text(resource_xml_element, URI_XPATH, resource.xmlns)
62
+ resource.mime_type = RCAP.xpath_text(resource_xml_element, MIME_TYPE_XPATH, resource.xmlns)
63
+ resource.size = RCAP.xpath_text(resource_xml_element, SIZE_XPATH, resource.xmlns).to_i
64
+ resource.digest = RCAP.xpath_text(resource_xml_element, DIGEST_XPATH, resource.xmlns)
63
65
  end
64
66
  end
65
67
 
@@ -70,9 +72,9 @@ module RCAP
70
72
  # @return [nil,Array(Integer,String)]
71
73
  def calculate_hash_and_size
72
74
  if @deref_uri
73
- @digest = Digest::SHA1.hexdigest( @deref_uri )
75
+ @digest = Digest::SHA1.hexdigest(@deref_uri)
74
76
  @size = @deref_uri.bytesize
75
- [ @size, @digest ]
77
+ [@size, @digest]
76
78
  end
77
79
  end
78
80
 
@@ -80,25 +82,23 @@ module RCAP
80
82
  #
81
83
  # @return [nil,String]
82
84
  def decoded_deref_uri
83
- Base64.decode64( @deref_uri ) if @deref_uri
85
+ Base64.decode64(@deref_uri) if @deref_uri
84
86
  end
85
87
 
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]
95
95
  def to_xml
96
- self.to_xml_element.to_s
96
+ to_xml_element.to_s
97
97
  end
98
98
 
99
99
  # @return [String]
100
100
  def inspect
101
- [ @resource_desc, @uri, @mime_type, @size ? format( "%.1fKB", self.size_in_kb ) : nil ].compact.join(' - ')
101
+ [@resource_desc, @uri, @mime_type, @size ? format('%.1fKB', size_in_kb) : nil].compact.join(' - ')
102
102
  end
103
103
 
104
104
  # Returns a string representation of the resource of the form
@@ -109,35 +109,35 @@ module RCAP
109
109
  @resource_desc
110
110
  end
111
111
 
112
- RESOURCE_DESC_YAML = "Resource Description"
113
- URI_YAML = "URI"
114
- MIME_TYPE_YAML = "Mime Type"
115
- SIZE_YAML = "Size"
116
- DIGEST_YAML = "Digest"
112
+ RESOURCE_DESC_YAML = 'Resource Description'
113
+ URI_YAML = 'URI'
114
+ MIME_TYPE_YAML = 'Mime Type'
115
+ SIZE_YAML = 'Size'
116
+ DIGEST_YAML = 'Digest'
117
117
 
118
118
  def to_yaml_data
119
- RCAP.attribute_values_to_hash( [ RESOURCE_DESC_YAML, @resource_desc ],
120
- [ URI_YAML, @uri ],
121
- [ MIME_TYPE_YAML, @mime_type ],
122
- [ SIZE_YAML, @size ],
123
- [ DIGEST_YAML, @digest ])
119
+ RCAP.attribute_values_to_hash([RESOURCE_DESC_YAML, @resource_desc],
120
+ [URI_YAML, @uri],
121
+ [MIME_TYPE_YAML, @mime_type],
122
+ [SIZE_YAML, @size],
123
+ [DIGEST_YAML, @digest])
124
124
  end
125
125
 
126
126
  # @param [Hash] options
127
127
  # @return [String]
128
- def to_yaml( options = {} )
129
- self.to_yaml_data.to_yaml( options )
128
+ def to_yaml(options = {})
129
+ to_yaml_data.to_yaml(options)
130
130
  end
131
131
 
132
132
  # @param [Hash] resource_yaml_data
133
133
  # @return [Resource]
134
- def self.from_yaml_data( resource_yaml_data )
135
- self.new do |resource|
136
- resource.resource_desc = resource_yaml_data[ RESOURCE_DESC_YAML ]
137
- resource.uri = resource_yaml_data[ URI_YAML ]
138
- resource.mime_type = resource_yaml_data[ MIME_TYPE_YAML ]
139
- resource.size = resource_yaml_data[ SIZE_YAML ]
140
- resource.digest = resource_yaml_data[ DIGEST_YAML ]
134
+ def self.from_yaml_data(resource_yaml_data)
135
+ new do |resource|
136
+ resource.resource_desc = resource_yaml_data[RESOURCE_DESC_YAML]
137
+ resource.uri = resource_yaml_data[URI_YAML]
138
+ resource.mime_type = resource_yaml_data[MIME_TYPE_YAML]
139
+ resource.size = resource_yaml_data[SIZE_YAML]
140
+ resource.digest = resource_yaml_data[DIGEST_YAML]
141
141
  end
142
142
  end
143
143
 
@@ -149,22 +149,22 @@ module RCAP
149
149
 
150
150
  # @return [Hash]
151
151
  def to_h
152
- RCAP.attribute_values_to_hash( [ RESOURCE_DESC_KEY, @resource_desc ],
153
- [ URI_KEY, @uri],
154
- [ MIME_TYPE_KEY, @mime_type],
155
- [ SIZE_KEY, @size ],
156
- [ DIGEST_KEY, @digest ])
152
+ RCAP.attribute_values_to_hash([RESOURCE_DESC_KEY, @resource_desc],
153
+ [URI_KEY, @uri],
154
+ [MIME_TYPE_KEY, @mime_type],
155
+ [SIZE_KEY, @size],
156
+ [DIGEST_KEY, @digest])
157
157
  end
158
158
 
159
159
  # @param [Hash] resource_hash
160
160
  # @return [Resource]
161
- def self.from_h( resource_hash )
162
- self.new do |resource|
163
- resource.resource_desc = RCAP.strip_if_given( resource_hash[ RESOURCE_DESC_KEY ])
164
- resource.uri = RCAP.strip_if_given( resource_hash[ URI_KEY ])
165
- resource.mime_type = RCAP.strip_if_given( resource_hash[ MIME_TYPE_KEY ])
166
- resource.size = RCAP.to_i_if_given( resource_hash[ SIZE_KEY ])
167
- resource.digest = RCAP.strip_if_given( resource_hash[ DIGEST_KEY ])
161
+ def self.from_h(resource_hash)
162
+ new do |resource|
163
+ resource.resource_desc = RCAP.strip_if_given(resource_hash[RESOURCE_DESC_KEY])
164
+ resource.uri = RCAP.strip_if_given(resource_hash[URI_KEY])
165
+ resource.mime_type = RCAP.strip_if_given(resource_hash[MIME_TYPE_KEY])
166
+ resource.size = RCAP.to_i_if_given(resource_hash[SIZE_KEY])
167
+ resource.digest = RCAP.strip_if_given(resource_hash[DIGEST_KEY])
168
168
  end
169
169
  end
170
170
  end