rcap 1.3.0 → 1.3.1

Sign up to get free protection for your applications and to get access to all the features.
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 ],