rcap 1.3.0 → 1.3.1

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.
Files changed (51) hide show
  1. data/{CHANGELOG.rdoc → CHANGELOG.md} +26 -20
  2. data/README.md +259 -0
  3. data/Rakefile +8 -7
  4. data/lib/extensions/array.rb +7 -1
  5. data/lib/extensions/date_time.rb +5 -1
  6. data/lib/extensions/string.rb +14 -1
  7. data/lib/extensions/time.rb +5 -1
  8. data/lib/rcap.rb +1 -1
  9. data/lib/rcap/alert.rb +24 -10
  10. data/lib/rcap/cap_1_0/alert.rb +232 -166
  11. data/lib/rcap/cap_1_0/area.rb +100 -67
  12. data/lib/rcap/cap_1_0/circle.rb +47 -22
  13. data/lib/rcap/cap_1_0/event_code.rb +3 -2
  14. data/lib/rcap/cap_1_0/geocode.rb +3 -2
  15. data/lib/rcap/cap_1_0/info.rb +265 -202
  16. data/lib/rcap/cap_1_0/parameter.rb +43 -20
  17. data/lib/rcap/cap_1_0/point.rb +23 -9
  18. data/lib/rcap/cap_1_0/polygon.rb +37 -19
  19. data/lib/rcap/cap_1_0/resource.rb +77 -55
  20. data/lib/rcap/cap_1_1/alert.rb +222 -156
  21. data/lib/rcap/cap_1_1/area.rb +100 -67
  22. data/lib/rcap/cap_1_1/circle.rb +49 -22
  23. data/lib/rcap/cap_1_1/event_code.rb +3 -2
  24. data/lib/rcap/cap_1_1/geocode.rb +3 -2
  25. data/lib/rcap/cap_1_1/info.rb +281 -217
  26. data/lib/rcap/cap_1_1/parameter.rb +35 -16
  27. data/lib/rcap/cap_1_1/point.rb +23 -9
  28. data/lib/rcap/cap_1_1/polygon.rb +38 -20
  29. data/lib/rcap/cap_1_1/resource.rb +106 -65
  30. data/lib/rcap/cap_1_2/alert.rb +224 -158
  31. data/lib/rcap/cap_1_2/area.rb +100 -67
  32. data/lib/rcap/cap_1_2/circle.rb +49 -24
  33. data/lib/rcap/cap_1_2/event_code.rb +3 -2
  34. data/lib/rcap/cap_1_2/geocode.rb +3 -2
  35. data/lib/rcap/cap_1_2/info.rb +285 -219
  36. data/lib/rcap/cap_1_2/parameter.rb +39 -19
  37. data/lib/rcap/cap_1_2/point.rb +23 -9
  38. data/lib/rcap/cap_1_2/polygon.rb +37 -20
  39. data/lib/rcap/cap_1_2/resource.rb +107 -67
  40. data/lib/rcap/config.rb +4 -0
  41. data/lib/rcap/utilities.rb +55 -2
  42. data/lib/rcap/validations.rb +2 -2
  43. data/lib/rcap/version.rb +1 -1
  44. data/rcap.gemspec +2 -2
  45. data/spec/cap_1_0/parameter_spec.rb +5 -1
  46. data/spec/cap_1_1/resource_spec.rb +6 -0
  47. data/spec/cap_1_2/alert_spec.rb +8 -0
  48. data/spec/cap_1_2/resource_spec.rb +8 -2
  49. metadata +11 -10
  50. data/README.rdoc +0 -247
  51. data/lib/config.rb +0 -2
@@ -8,63 +8,86 @@ module RCAP
8
8
 
9
9
  validates_presence_of( :name, :value )
10
10
 
11
- attr_accessor( :name, :value )
11
+ # @return [String]
12
+ attr_accessor( :name )
13
+ # @return [String]
14
+ attr_accessor( :value )
12
15
 
13
- XML_ELEMENT_NAME = "parameter" # :nodoc:
14
- NAME_ELEMENT_NAME = "valueName" # :nodoc:
15
- VALUE_ELEMENT_NAME = "value" # :nodoc:
16
+ XML_ELEMENT_NAME = "parameter"
17
+ NAME_ELEMENT_NAME = "valueName"
18
+ VALUE_ELEMENT_NAME = "value"
16
19
 
17
- XPATH = "cap:#{ XML_ELEMENT_NAME }" # :nodoc:
18
- NAME_XPATH = "cap:#{ NAME_ELEMENT_NAME }" # :nodoc:
19
- VALUE_XPATH = "cap:#{ VALUE_ELEMENT_NAME }" # :nodoc:
20
+ XPATH = "cap:#{ XML_ELEMENT_NAME }"
21
+ NAME_XPATH = "cap:#{ NAME_ELEMENT_NAME }"
22
+ VALUE_XPATH = "cap:#{ VALUE_ELEMENT_NAME }"
20
23
 
24
+ # @param [Hash] attributes
25
+ # @option attributes [Symbol] :name Parameter name
26
+ # @option attributes [Symbol] :value Parameter value
21
27
  def initialize( attributes = {} )
22
28
  @name = attributes[ :name ]
23
29
  @value = attributes[ :value ]
24
30
  end
25
31
 
26
- def to_xml_element # :nodoc:
32
+ # @return [REXML::Element]
33
+ def to_xml_element
27
34
  xml_element = REXML::Element.new( self.class::XML_ELEMENT_NAME )
28
- xml_element.add_text( "#{ self.name }=#{ self.value }")
35
+ xml_element.add_text( "#{ @name }=#{ @value }")
29
36
  xml_element
30
37
  end
31
38
 
32
- def to_xml # :nodoc:
39
+ # @return [String]
40
+ def to_xml
33
41
  self.to_xml_element.to_s
34
42
  end
35
43
 
36
- def inspect # :nodoc:
37
- "#{ self.name }: #{ self.value }"
44
+ # @return [String]
45
+ def inspect
46
+ "#{ @name }: #{ @value }"
38
47
  end
39
48
 
40
49
  # Returns a string representation of the parameter of the form
41
50
  # name: value
51
+ #
52
+ # @return [String]
42
53
  def to_s
43
54
  self.inspect
44
55
  end
45
56
 
46
- def self.from_xml_element( parameter_xml_element ) # :nodoc:
57
+ # @param [REXML::Element] parameter_xml_element
58
+ # @return [Parameter]
59
+ def self.from_xml_element( parameter_xml_element )
47
60
  self.new( self.parse_parameter( parameter_xml_element.text ))
48
61
  end
49
62
 
50
63
  # Two parameters are equivalent if they have the same name and value.
64
+ #
65
+ # @param [Parameter] other
66
+ # @return [true, false]
51
67
  def ==( other )
52
- [ self.name, self.value ] == [ other.name, other.value ]
68
+ [ @name, @value ] == [ other.name, other.value ]
53
69
  end
54
70
 
55
- def to_h # :nodoc:
56
- RCAP.attribute_values_to_hash( [ self.name, self.value ])
71
+ # @return [Hash]
72
+ def to_h
73
+ RCAP.attribute_values_to_hash( [ @name, @value ])
57
74
  end
58
75
 
59
- def self.from_h( hash ) # :nodoc:
76
+ # @param [Hash] hash
77
+ # @return [Parameter]
78
+ def self.from_h( hash )
60
79
  key = hash.keys.first
61
80
  self.new( :name => key, :value => hash[ key ])
62
81
  end
63
82
 
64
- def self.parse_parameter( parameter_string ) # :nodoc:
83
+ # @param [String] parameter_string
84
+ # @return [Hash]
85
+ def self.parse_parameter( parameter_string )
65
86
  name, value = parameter_string.split("=")
66
- { :name => name,
67
- :value => value }
87
+ if name && value
88
+ { :name => name,
89
+ :value => value }
90
+ end
68
91
  end
69
92
  end
70
93
  end
@@ -11,13 +11,18 @@ module RCAP
11
11
  MAX_LATTITUDE = 90
12
12
  MIN_LATTITUDE = -90
13
13
 
14
+ # @return [Numeric]
14
15
  attr_accessor( :lattitude )
16
+ # @return [Numeric]
15
17
  attr_accessor( :longitude )
16
18
 
17
19
  validates_numericality_of( :lattitude, :longitude )
18
20
  validates_inclusion_of( :lattitude, :in => MIN_LATTITUDE..MAX_LATTITUDE )
19
21
  validates_inclusion_of( :longitude, :in => MIN_LONGITUDE..MAX_LONGITUDE)
20
22
 
23
+ # @param [Hash] attributes
24
+ # @option attributes [Numeric] :lattitude
25
+ # @option attributes [Numeric] :longitude
21
26
  def initialize( attributes = {} )
22
27
  @lattitude = attributes[ :lattitude ]
23
28
  @longitude = attributes[ :longitude ]
@@ -25,29 +30,38 @@ module RCAP
25
30
 
26
31
  # Returns a string representation of the point of the form
27
32
  # lattitude,longitude
33
+ #
34
+ # @return [String]
28
35
  def to_s
29
- "#{ self.lattitude },#{ self.longitude }"
36
+ "#{ @lattitude },#{ @longitude }"
30
37
  end
31
38
 
32
- def inspect # :nodoc:
39
+ # @return [String]
40
+ def inspect
33
41
  '('+self.to_s+')'
34
42
  end
35
43
 
36
44
  # Two points are equivalent if they have the same lattitude and longitude
45
+ #
46
+ # @param [Point] other
47
+ # @return [true, false]
37
48
  def ==( other )
38
- [ self.lattitude, self.longitude ] == [ other.lattitude, other.longitude ]
49
+ [ @lattitude, @longitude ] == [ other.lattitude, other.longitude ]
39
50
  end
40
51
 
41
- LATTITUDE_KEY = 'lattitude' # :nodoc:
42
- LONGITUDE_KEY = 'longitude' # :nodoc:
52
+ LATTITUDE_KEY = 'lattitude'
53
+ LONGITUDE_KEY = 'longitude'
43
54
 
44
- def to_h # :nodoc:
55
+ # @return [Hash]
56
+ def to_h
45
57
  RCAP.attribute_values_to_hash(
46
- [ LATTITUDE_KEY, self.lattitude ],
47
- [ LONGITUDE_KEY, self.longitude ])
58
+ [ LATTITUDE_KEY, @lattitude ],
59
+ [ LONGITUDE_KEY, @longitude ])
48
60
  end
49
61
 
50
- def self.from_h( point_hash ) # :nodoc:
62
+ # @param [Hash] point_hash
63
+ # @return [Point]
64
+ def self.from_h( point_hash )
51
65
  self.new( :lattitude => point_hash[ LATTITUDE_KEY ], :longitude => point_hash[ LONGITUDE_KEY ])
52
66
  end
53
67
  end
@@ -6,25 +6,28 @@ module RCAP
6
6
  class Polygon
7
7
  include Validation
8
8
 
9
- # Collection of Point objects.
9
+ # @return [Array<Point>] Collection of {Point} objects
10
10
  attr_reader( :points )
11
11
 
12
12
  validates_collection_of( :points )
13
13
  validates_length_of( :points, :minimum => 3 )
14
14
  validates_equality_of_first_and_last( :points )
15
15
 
16
- XML_ELEMENT_NAME = 'polygon' # :nodoc:
17
- XPATH = "cap:#{ XML_ELEMENT_NAME }" # :nodoc:
18
-
16
+ XML_ELEMENT_NAME = 'polygon'
17
+ XPATH = "cap:#{ XML_ELEMENT_NAME }"
18
+
19
+ # @param [Hash] attributes
20
+ # @option attributes [Array<Point>] :points Collection of {Point} objects
19
21
  def initialize( attributes = {})
20
22
  @points = Array( attributes[ :points ])
21
23
  end
22
24
 
23
- # Creates a new Point object and adds it to the points array. The
24
- # poitn_attributes are passed as a parameter to Point.new.
25
+ # Creates a new Point object and adds it to the points array.
26
+ #
27
+ # @see Point#initialize
25
28
  def add_point( point_attributes = {})
26
29
  point = Point.new( point_attributes )
27
- self.points << point
30
+ @points << point
28
31
  point
29
32
  end
30
33
 
@@ -35,26 +38,37 @@ module RCAP
35
38
  @points.join( ' ' )
36
39
  end
37
40
 
38
- def inspect # :nodoc:
41
+ # @return [String]
42
+ def inspect
39
43
  "(#{ @points.map{|point| point.inspect}.join(', ')})"
40
44
  end
41
45
 
42
- def to_xml_element # :nodoc:
46
+ # @return [REXML::Element]
47
+ def to_xml_element
43
48
  xml_element = REXML::Element.new( XML_ELEMENT_NAME )
44
49
  xml_element.add_text( self.to_s )
45
50
  xml_element
46
51
  end
47
52
 
53
+ # @return [String]
54
+ def to_xml
55
+ self.to_xml_element.to_s
56
+ end
57
+
48
58
  # Two polygons are equivalent if their collection of points is equivalent.
59
+ #
60
+ # @return [true,false]
49
61
  def ==( other )
50
- self.points == other.points
62
+ @points == other.points
51
63
  end
52
64
 
53
- def self.parse_polygon_string( polygon_string ) # :nodoc:
65
+ # @return [Array<Array(Numeric,Numeric)>]
66
+ def self.parse_polygon_string( polygon_string )
54
67
  polygon_string.split( ' ' ).map{ |coordinate_string| coordinate_string.split( ',' ).map{|coordinate| coordinate.to_f }}
55
68
  end
56
69
 
57
- def self.from_xml_element( polygon_xml_element ) # :nodoc:
70
+ # @return [Polygon]
71
+ def self.from_xml_element( polygon_xml_element )
58
72
  if !polygon_xml_element.text.nil? && !polygon_xml_element.text.empty?
59
73
  coordinates = self.parse_polygon_string( polygon_xml_element.text )
60
74
  points = coordinates.map{ |lattitude, longitude| Point.new( :lattitude => lattitude, :longitude => longitude )}
@@ -65,21 +79,25 @@ module RCAP
65
79
  end
66
80
 
67
81
 
68
- def to_yaml( options = {} ) # :nodoc:
69
- self.points.map{ |point| [ point.lattitude, point.longitude ]}.to_yaml( options )
82
+ # @return [String]
83
+ def to_yaml( options = {} )
84
+ @points.map{ |point| [ point.lattitude, point.longitude ]}.to_yaml( options )
70
85
  end
71
86
 
72
- def self.from_yaml_data( polygon_yaml_data ) # :nodoc:
87
+ # @return [Polygon]
88
+ def self.from_yaml_data( polygon_yaml_data )
73
89
  self.new( :points => Array( polygon_yaml_data ).map{ |lattitude, longitude| Point.new( :lattitude => lattitude, :longitude => longitude )})
74
90
  end
75
91
 
76
- POINTS_KEY = 'points' # :nodoc:
92
+ POINTS_KEY = 'points'
77
93
 
78
- def to_h # :nodoc:
79
- { POINTS_KEY => self.points.map{ |point| point.to_h }}
94
+ # @return [Hash]
95
+ def to_h
96
+ { POINTS_KEY => @points.map{ |point| point.to_h }}
80
97
  end
81
98
 
82
- def self.from_h( polygon_hash ) # :nodoc:
99
+ # @return [Polygon]
100
+ def self.from_h( polygon_hash )
83
101
  self.new( :points => polygon_hash[ POINTS_KEY ].map{ |point_hash| Point.from_h( point_hash )})
84
102
  end
85
103
  end
@@ -6,32 +6,39 @@ module RCAP
6
6
  class Resource
7
7
  include Validation
8
8
 
9
- # Resource Description
9
+ # @return [String] Resource Description
10
10
  attr_accessor( :resource_desc )
11
+ # @return [String]
11
12
  attr_accessor( :mime_type )
12
- # Expressed in bytes
13
+ # @return [Integer] Expressed in bytes
13
14
  attr_accessor( :size )
14
- # Resource location
15
+ # @return [String] Resource location
15
16
  attr_accessor( :uri )
16
- # SHA-1 hash of contents of resource
17
+ # @return [String] SHA-1 hash of contents of resource
17
18
  attr_accessor( :digest )
18
19
 
19
20
  validates_presence_of( :resource_desc )
20
21
 
21
- XML_ELEMENT_NAME = 'resource' # :nodoc:
22
- MIME_TYPE_ELEMENT_NAME = 'mimeType' # :nodoc:
23
- SIZE_ELEMENT_NAME = 'size' # :nodoc:
24
- URI_ELEMENT_NAME = 'uri' # :nodoc:
25
- DIGEST_ELEMENT_NAME = 'digest' # :nodoc:
26
- RESOURCE_DESC_ELEMENT_NAME = 'resourceDesc' # :nodoc:
27
-
28
- XPATH = "cap:#{ XML_ELEMENT_NAME }" # :nodoc:
29
- MIME_TYPE_XPATH = "cap:#{ MIME_TYPE_ELEMENT_NAME }" # :nodoc:
30
- SIZE_XPATH = "cap:#{ SIZE_ELEMENT_NAME }" # :nodoc:
31
- URI_XPATH = "cap:#{ URI_ELEMENT_NAME }" # :nodoc:
32
- DIGEST_XPATH = "cap:#{ DIGEST_ELEMENT_NAME }" # :nodoc:
33
- RESOURCE_DESC_XPATH = "cap:#{ RESOURCE_DESC_ELEMENT_NAME }" # :nodoc:
34
-
22
+ XML_ELEMENT_NAME = 'resource'
23
+ MIME_TYPE_ELEMENT_NAME = 'mimeType'
24
+ SIZE_ELEMENT_NAME = 'size'
25
+ URI_ELEMENT_NAME = 'uri'
26
+ DIGEST_ELEMENT_NAME = 'digest'
27
+ RESOURCE_DESC_ELEMENT_NAME = 'resourceDesc'
28
+
29
+ XPATH = "cap:#{ XML_ELEMENT_NAME }"
30
+ MIME_TYPE_XPATH = "cap:#{ MIME_TYPE_ELEMENT_NAME }"
31
+ SIZE_XPATH = "cap:#{ SIZE_ELEMENT_NAME }"
32
+ URI_XPATH = "cap:#{ URI_ELEMENT_NAME }"
33
+ DIGEST_XPATH = "cap:#{ DIGEST_ELEMENT_NAME }"
34
+ RESOURCE_DESC_XPATH = "cap:#{ RESOURCE_DESC_ELEMENT_NAME }"
35
+
36
+ # @param [Hash{Symbol => Object}] attributes
37
+ # @option attributes [String] :mime_type
38
+ # @option attributes [Numeric] :size Size in bytes
39
+ # @option attributes [String] :uri
40
+ # @option attributes [String] :digest
41
+ # @option attributes [String] :resource_desc
35
42
  def initialize( attributes = {} )
36
43
  @mime_type = attributes[ :mime_type ]
37
44
  @size = attributes[ :size ]
@@ -40,38 +47,46 @@ module RCAP
40
47
  @resource_desc = attributes[ :resource_desc ]
41
48
  end
42
49
 
43
- def to_xml_element # :nodoc:
50
+ # @return [REXML::Element]
51
+ def to_xml_element
44
52
  xml_element = REXML::Element.new( XML_ELEMENT_NAME )
45
- xml_element.add_element( RESOURCE_DESC_ELEMENT_NAME ).add_text( self.resource_desc )
46
- xml_element.add_element( MIME_TYPE_ELEMENT_NAME ).add_text( self.mime_type ) if self.mime_type
47
- xml_element.add_element( SIZE_ELEMENT_NAME ).add_text( self.size.to_s ) if self.size
48
- xml_element.add_element( URI_ELEMENT_NAME ).add_text( self.uri ) if self.uri
49
- xml_element.add_element( DIGEST_ELEMENT_NAME ).add_text( self.digest ) if self.digest
53
+ xml_element.add_element( RESOURCE_DESC_ELEMENT_NAME ).add_text( @resource_desc )
54
+ xml_element.add_element( MIME_TYPE_ELEMENT_NAME ).add_text( @mime_type ) if @mime_type
55
+ xml_element.add_element( SIZE_ELEMENT_NAME ).add_text( @size.to_s ) if @size
56
+ xml_element.add_element( URI_ELEMENT_NAME ).add_text( @uri ) if @uri
57
+ xml_element.add_element( DIGEST_ELEMENT_NAME ).add_text( @digest ) if @digest
50
58
  xml_element
51
59
  end
52
60
 
53
61
  # If size is defined returns the size in kilobytes
62
+ # @return [Float]
54
63
  def size_in_kb
55
- if self.size
56
- self.size.to_f/1024
64
+ if @size
65
+ @size.to_f/1024
57
66
  end
58
67
  end
59
68
 
60
- def to_xml # :nodoc:
69
+ # @return [String]
70
+ def to_xml
61
71
  self.to_xml_element.to_s
62
72
  end
63
73
 
64
- def inspect # :nodoc:
65
- [ self.resource_desc, self.uri, self.mime_type, self.size ? format( "%.1fKB", self.size_in_kb ) : nil ].compact.join(' - ')
74
+ # @return [String]
75
+ def inspect
76
+ [ @resource_desc, @uri, @mime_type, @size ? format( "%.1fKB", @size_in_kb ) : nil ].compact.join(' - ')
66
77
  end
67
78
 
68
79
  # Returns a string representation of the resource of the form
69
80
  # resource_desc
81
+ #
82
+ # @return [String]
70
83
  def to_s
71
- self.resource_desc
84
+ @resource_desc
72
85
  end
73
86
 
74
- def self.from_xml_element( resource_xml_element ) # :nodoc:
87
+ # @param [REXML::Element] resource_xml_element
88
+ # @return [Resource]
89
+ def self.from_xml_element( resource_xml_element )
75
90
  resource = self.new( :resource_desc => RCAP.xpath_text( resource_xml_element, RESOURCE_DESC_XPATH, Alert::XMLNS ),
76
91
  :uri => RCAP.xpath_text( resource_xml_element, URI_XPATH, Alert::XMLNS ),
77
92
  :mime_type => RCAP.xpath_text( resource_xml_element, MIME_TYPE_XPATH, Alert::XMLNS ),
@@ -79,23 +94,27 @@ module RCAP
79
94
  :digest => RCAP.xpath_text( resource_xml_element, DIGEST_XPATH, Alert::XMLNS ))
80
95
  end
81
96
 
82
- RESOURCE_DESC_YAML = "Resource Description" # :nodoc:
83
- URI_YAML = "URI" # :nodoc:
84
- MIME_TYPE_YAML = "Mime Type" # :nodoc:
85
- SIZE_YAML = "Size" # :nodoc:
86
- DIGEST_YAML = "Digest" # :nodoc:
97
+ RESOURCE_DESC_YAML = "Resource Description"
98
+ URI_YAML = "URI"
99
+ MIME_TYPE_YAML = "Mime Type"
100
+ SIZE_YAML = "Size"
101
+ DIGEST_YAML = "Digest"
87
102
 
88
- def to_yaml( options = {} ) # :nodoc:
103
+ # @param [Hash] options
104
+ # @return [String]
105
+ def to_yaml( options = {} )
89
106
  RCAP.attribute_values_to_hash(
90
- [ RESOURCE_DESC_YAML, self.resource_desc ],
91
- [ URI_YAML, self.uri ],
92
- [ MIME_TYPE_YAML, self.mime_type ],
93
- [ SIZE_YAML, self.size ],
94
- [ DIGEST_YAML, self.digest ]
107
+ [ RESOURCE_DESC_YAML, @resource_desc ],
108
+ [ URI_YAML, @uri ],
109
+ [ MIME_TYPE_YAML, @mime_type ],
110
+ [ SIZE_YAML, @size ],
111
+ [ DIGEST_YAML, @digest ]
95
112
  ).to_yaml( options )
96
113
  end
97
114
 
98
- def self.from_yaml_data( resource_yaml_data ) # :nodoc:
115
+ # @param [Hash] resource_yaml_data
116
+ # @return [Resource]
117
+ def self.from_yaml_data( resource_yaml_data )
99
118
  self.new(
100
119
  :resource_desc => reource_yaml_data[ RESOURCE_DESC_YAML ],
101
120
  :uri => reource_yaml_data[ URI_YAML ],
@@ -105,22 +124,25 @@ module RCAP
105
124
  )
106
125
  end
107
126
 
108
- RESOURCE_DESC_KEY = 'resource_desc' # :nodoc:
109
- URI_KEY = 'uri' # :nodoc:
110
- MIME_TYPE_KEY = 'mime_type' # :nodoc:
111
- SIZE_KEY = 'size' # :nodoc:
112
- DIGEST_KEY = 'digest' # :nodoc:
127
+ RESOURCE_DESC_KEY = 'resource_desc'
128
+ URI_KEY = 'uri'
129
+ MIME_TYPE_KEY = 'mime_type'
130
+ SIZE_KEY = 'size'
131
+ DIGEST_KEY = 'digest'
113
132
 
114
- def to_h # :nodoc:
133
+ # @return [Hash]
134
+ def to_h
115
135
  RCAP.attribute_values_to_hash(
116
- [ RESOURCE_DESC_KEY, self.resource_desc ],
117
- [ URI_KEY, self.uri],
118
- [ MIME_TYPE_KEY, self.mime_type],
119
- [ SIZE_KEY, self.size ],
120
- [ DIGEST_KEY, self.digest ])
136
+ [ RESOURCE_DESC_KEY, @resource_desc ],
137
+ [ URI_KEY, @uri],
138
+ [ MIME_TYPE_KEY, @mime_type],
139
+ [ SIZE_KEY, @size ],
140
+ [ DIGEST_KEY, @digest ])
121
141
  end
122
142
 
123
- def self.from_h( resource_hash ) # :nodoc:
143
+ # @param [Hash] resource_hash
144
+ # @return [Resource]
145
+ def self.from_h( resource_hash )
124
146
  self.new(
125
147
  :resource_desc => resource_hash[ RESOURCE_DESC_KEY ],
126
148
  :uri => resource_hash[ URI_KEY ],