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,57 +8,77 @@ 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_element( NAME_ELEMENT_NAME ).add_text( self.name )
29
- xml_element.add_element( VALUE_ELEMENT_NAME ).add_text( self.value )
35
+ xml_element.add_element( self.class::NAME_ELEMENT_NAME ).add_text( @name )
36
+ xml_element.add_element( self.class::VALUE_ELEMENT_NAME ).add_text( @value )
30
37
  xml_element
31
38
  end
32
39
 
33
- def to_xml # :nodoc:
40
+ # @return [String]
41
+ def to_xml
34
42
  self.to_xml_element.to_s
35
43
  end
36
44
 
37
- def inspect # :nodoc:
38
- "#{ self.name }: #{ self.value }"
45
+ # @return [String]
46
+ def inspect
47
+ "#{ @name }: #{ @value }"
39
48
  end
40
49
 
41
50
  # Returns a string representation of the parameter of the form
42
51
  # name: value
52
+ #
53
+ # @return [String]
43
54
  def to_s
44
55
  self.inspect
45
56
  end
46
57
 
58
+ # @param [REXML::Element] parameter_xml_element
59
+ # @return [Parameter]
47
60
  def self.from_xml_element( parameter_xml_element ) # :nodoc:
48
- self.new( :name => RCAP.xpath_text( parameter_xml_element, NAME_XPATH, Alert::XMLNS ),
49
- :value => RCAP.xpath_text( parameter_xml_element, VALUE_XPATH, Alert::XMLNS ))
61
+ self.new( :name => RCAP.xpath_text( parameter_xml_element, self::NAME_XPATH, Alert::XMLNS ),
62
+ :value => RCAP.xpath_text( parameter_xml_element, self::VALUE_XPATH, Alert::XMLNS ))
50
63
  end
51
64
 
52
65
  # Two parameters are equivalent if they have the same name and value.
66
+ #
67
+ # @param [Parameter] other
68
+ # @return [true, false]
53
69
  def ==( other )
54
- [ self.name, self.value ] == [ other.name, other.value ]
70
+ [ @name, @value ] == [ other.name, other.value ]
55
71
  end
56
72
 
57
- def to_h # :nodoc:
58
- RCAP.attribute_values_to_hash( [ self.name, self.value ])
73
+ # @return [Hash]
74
+ def to_h
75
+ RCAP.attribute_values_to_hash(
76
+ [ @name, @value ])
59
77
  end
60
78
 
61
- def self.from_h( hash ) # :nodoc:
79
+ # @param [Hash] hash
80
+ # @return [Parameter]
81
+ def self.from_h( hash )
62
82
  key = hash.keys.first
63
83
  self.new( :name => key, :value => hash[ key ])
64
84
  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 => 4 )
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 && !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 )}
@@ -64,22 +78,25 @@ module RCAP
64
78
  end
65
79
  end
66
80
 
67
-
68
- def to_yaml( options = {} ) # :nodoc:
69
- self.points.map{ |point| [ point.lattitude, point.longitude ]}.to_yaml( options )
81
+ # @return [String]
82
+ def to_yaml( options = {} )
83
+ @points.map{ |point| [ point.lattitude, point.longitude ]}.to_yaml( options )
70
84
  end
71
85
 
72
- def self.from_yaml_data( polygon_yaml_data ) # :nodoc:
86
+ # @return [Polygon]
87
+ def self.from_yaml_data( polygon_yaml_data )
73
88
  self.new( :points => Array( polygon_yaml_data ).map{ |lattitude, longitude| Point.new( :lattitude => lattitude, :longitude => longitude )})
74
89
  end
75
90
 
76
- POINTS_KEY = 'points' # :nodoc:
91
+ POINTS_KEY = 'points'
77
92
 
78
- def to_h # :nodoc:
79
- { POINTS_KEY => self.points.map{ |point| point.to_h }}
93
+ # @return [Hash]
94
+ def to_h
95
+ { POINTS_KEY => @points.map{ |point| point.to_h }}
80
96
  end
81
97
 
82
- def self.from_h( polygon_hash ) # :nodoc:
98
+ # @return [Polygon]
99
+ def self.from_h( polygon_hash )
83
100
  self.new( :points => polygon_hash[ POINTS_KEY ].map{ |point_hash| Point.from_h( point_hash )})
84
101
  end
85
102
  end
@@ -3,41 +3,49 @@ module RCAP
3
3
 
4
4
  # A Resource object is valid if
5
5
  # * it has a resource description
6
+ # * it has a mime_type
6
7
  class Resource
7
8
  include Validation
8
9
 
9
- # Resource Description
10
+ # @return [String] Resource description
10
11
  attr_accessor( :resource_desc )
11
- # MIME type as described in RFC 2046
12
+ # @return [String] MIME type as described in RFC 2046
12
13
  attr_accessor( :mime_type )
13
- # Expressed in bytes
14
+ # @return [Integer] Expressed in bytes
14
15
  attr_accessor( :size )
15
- # Resource location
16
+ # @return [String] Resource location
16
17
  attr_accessor( :uri )
17
- # Dereferenced URI - contents of URI Base64 encoded
18
+ # @return [String] Dereferenced URI - contents of URI Base64 encoded
18
19
  attr_accessor( :deref_uri )
19
- # SHA-1 hash of contents of resource
20
+ # @return [String] SHA-1 hash of contents of resource
20
21
  attr_accessor( :digest )
21
22
 
22
23
  validates_presence_of( :resource_desc )
23
24
  validates_presence_of( :mime_type )
24
25
 
25
- XML_ELEMENT_NAME = 'resource' # :nodoc:
26
- MIME_TYPE_ELEMENT_NAME = 'mimeType' # :nodoc:
27
- SIZE_ELEMENT_NAME = 'size' # :nodoc:
28
- URI_ELEMENT_NAME = 'uri' # :nodoc:
29
- DEREF_URI_ELEMENT_NAME = 'derefUri' # :nodoc:
30
- DIGEST_ELEMENT_NAME = 'digest' # :nodoc:
31
- RESOURCE_DESC_ELEMENT_NAME = 'resourceDesc' # :nodoc:
32
-
33
- XPATH = "cap:#{ XML_ELEMENT_NAME }" # :nodoc:
34
- MIME_TYPE_XPATH = "cap:#{ MIME_TYPE_ELEMENT_NAME }" # :nodoc:
35
- SIZE_XPATH = "cap:#{ SIZE_ELEMENT_NAME }" # :nodoc:
36
- URI_XPATH = "cap:#{ URI_ELEMENT_NAME }" # :nodoc:
37
- DEREF_URI_XPATH = "cap:#{ DEREF_URI_ELEMENT_NAME }" # :nodoc:
38
- DIGEST_XPATH = "cap:#{ DIGEST_ELEMENT_NAME }" # :nodoc:
39
- RESOURCE_DESC_XPATH = "cap:#{ RESOURCE_DESC_ELEMENT_NAME }" # :nodoc:
40
-
26
+ XML_ELEMENT_NAME = 'resource'
27
+ MIME_TYPE_ELEMENT_NAME = 'mimeType'
28
+ SIZE_ELEMENT_NAME = 'size'
29
+ URI_ELEMENT_NAME = 'uri'
30
+ DEREF_URI_ELEMENT_NAME = 'derefUri'
31
+ DIGEST_ELEMENT_NAME = 'digest'
32
+ RESOURCE_DESC_ELEMENT_NAME = 'resourceDesc'
33
+
34
+ XPATH = "cap:#{ XML_ELEMENT_NAME }"
35
+ MIME_TYPE_XPATH = "cap:#{ MIME_TYPE_ELEMENT_NAME }"
36
+ SIZE_XPATH = "cap:#{ SIZE_ELEMENT_NAME }"
37
+ URI_XPATH = "cap:#{ URI_ELEMENT_NAME }"
38
+ DEREF_URI_XPATH = "cap:#{ DEREF_URI_ELEMENT_NAME }"
39
+ DIGEST_XPATH = "cap:#{ DIGEST_ELEMENT_NAME }"
40
+ RESOURCE_DESC_XPATH = "cap:#{ RESOURCE_DESC_ELEMENT_NAME }"
41
+
42
+ # @param [Hash{Symbol => Object}] attributes
43
+ # @option attributes [String] :mime_type
44
+ # @option attributes [Numeric] :size Size in bytes
45
+ # @option attributes [String] :uri
46
+ # @option attributes [String] :deref_uri
47
+ # @option attributes [String] :digest
48
+ # @option attributes [String] :resource_desc
41
49
  def initialize( attributes = {} )
42
50
  @mime_type = attributes[ :mime_type ]
43
51
  @size = attributes[ :size ]
@@ -47,57 +55,83 @@ module RCAP
47
55
  @resource_desc = attributes[ :resource_desc ]
48
56
  end
49
57
 
50
- def to_xml_element # :nodoc:
58
+ # @return [REXML::Element]
59
+ def to_xml_element
51
60
  xml_element = REXML::Element.new( XML_ELEMENT_NAME )
52
- xml_element.add_element( RESOURCE_DESC_ELEMENT_NAME ).add_text( self.resource_desc )
53
- xml_element.add_element( MIME_TYPE_ELEMENT_NAME ).add_text( self.mime_type ) if self.mime_type
54
- xml_element.add_element( SIZE_ELEMENT_NAME ).add_text( self.size.to_s ) if self.size
55
- xml_element.add_element( URI_ELEMENT_NAME ).add_text( self.uri ) if self.uri
56
- xml_element.add_element( DEREF_URI_ELEMENT_NAME ).add_text( self.deref_uri ) if self.deref_uri
57
- xml_element.add_element( DIGEST_ELEMENT_NAME ).add_text( self.digest ) if self.digest
61
+ xml_element.add_element( RESOURCE_DESC_ELEMENT_NAME ).add_text( @resource_desc )
62
+ xml_element.add_element( MIME_TYPE_ELEMENT_NAME ).add_text( @mime_type ) if @mime_type
63
+ xml_element.add_element( SIZE_ELEMENT_NAME ).add_text( @size.to_s ) if @size
64
+ xml_element.add_element( URI_ELEMENT_NAME ).add_text( @uri ) if @uri
65
+ xml_element.add_element( DEREF_URI_ELEMENT_NAME ).add_text( @deref_uri ) if @deref_uri
66
+ xml_element.add_element( DIGEST_ELEMENT_NAME ).add_text( @digest ) if @digest
58
67
  xml_element
59
68
  end
60
69
 
61
70
  # If size is defined returns the size in kilobytes
71
+ # @return [Float]
62
72
  def size_in_kb
63
- if self.size
64
- self.size.to_f/1024
73
+ if @size
74
+ @size.to_f/1024
65
75
  end
66
76
  end
67
77
 
68
- def to_xml # :nodoc:
78
+ # @return [String]
79
+ def to_xml
69
80
  self.to_xml_element.to_s
70
81
  end
71
82
 
72
- def inspect # :nodoc:
73
- [ self.resource_desc, self.uri, self.mime_type, self.size ? format( "%.1fKB", self.size_in_kb ) : nil ].compact.join(' - ')
83
+ # @return [String]
84
+ def inspect
85
+ [ @resource_desc, @uri, @mime_type, @size ? format( "%.1fKB", @size_in_kb ) : nil ].compact.join(' - ')
74
86
  end
75
87
 
76
88
  # Returns a string representation of the resource of the form
77
89
  # resource_desc
90
+ #
91
+ # @return [String]
78
92
  def to_s
79
- self.resource_desc
93
+ @resource_desc
80
94
  end
81
95
 
82
96
  # Retrieves the content at uri and stores it in deref_uri as Base64 encoded text. It will also
83
- # calculate the digest on the encoded data using SHA1 and set the size.
97
+ # calculate the {#digest} on the encoded data using SHA1 and set the {#size}.
84
98
  #
85
99
  # This uses the open-uri[http://ruby-doc.org/stdlib/libdoc/open-uri/rdoc/index.html] Ruby API
86
- # to open and read the content.
100
+ # to open and read the content. This method may throw an exception due to any number of network
101
+ # related issue so please handle accordingly.
102
+ #
103
+ # Returns an array containing the size (in bytes) and SHA-1 hash.
104
+ #
105
+ # @return [Array(Integer,String)]
87
106
  def dereference_uri!
88
107
  content = URI.parse( self.uri ).read
89
108
  @deref_uri = Base64.encode64( content )
90
109
  self.calculate_hash_and_size
91
110
  end
92
111
 
112
+ # Calculates the SHA-1 hash and size of the contents of {#deref_uri}.
113
+ # Returns an array containing the size (in bytes) and SHA-1 hash if
114
+ # {#deref_uri} is present otherwise returns nil.
115
+ #
116
+ # @return [nil,Array(Integer,String)]
93
117
  def calculate_hash_and_size
94
118
  if @deref_uri
95
119
  @digest = Digest::SHA1.hexdigest( @deref_uri )
96
120
  @size = @deref_uri.bytesize
121
+ [ @size, @digest ]
97
122
  end
98
123
  end
99
124
 
100
- def self.from_xml_element( resource_xml_element ) # :nodoc:
125
+ # The decoded contents of {#deref_uri} if present otherwise nil.
126
+ #
127
+ # @return [nil,String]
128
+ def decoded_deref_uri
129
+ Base64.decode64( @deref_uri ) if @deref_uri
130
+ end
131
+
132
+ # @param [REXML::Element] resource_xml_element
133
+ # @return [Resource]
134
+ def self.from_xml_element( resource_xml_element )
101
135
  resource = self.new( :resource_desc => RCAP.xpath_text( resource_xml_element, RESOURCE_DESC_XPATH, Alert::XMLNS ),
102
136
  :uri => RCAP.xpath_text( resource_xml_element, URI_XPATH, Alert::XMLNS ),
103
137
  :mime_type => RCAP.xpath_text( resource_xml_element, MIME_TYPE_XPATH, Alert::XMLNS ),
@@ -106,25 +140,28 @@ module RCAP
106
140
  :digest => RCAP.xpath_text( resource_xml_element, DIGEST_XPATH, Alert::XMLNS ))
107
141
  end
108
142
 
109
- RESOURCE_DESC_YAML = "Resource Description" # :nodoc:
110
- URI_YAML = "URI" # :nodoc:
111
- MIME_TYPE_YAML = "Mime Type" # :nodoc:
112
- DEREF_URI_YAML = "Derefrenced URI Data" # :nodoc:
113
- SIZE_YAML = "Size" # :nodoc:
114
- DIGEST_YAML = "Digest" # :nodoc:
143
+ RESOURCE_DESC_YAML = "Resource Description"
144
+ URI_YAML = "URI"
145
+ MIME_TYPE_YAML = "Mime Type"
146
+ DEREF_URI_YAML = "Derefrenced URI Data"
147
+ SIZE_YAML = "Size"
148
+ DIGEST_YAML = "Digest"
115
149
 
116
- def to_yaml( options = {} ) # :nodoc:
150
+ # @param [Hash] options
151
+ # @return [String]
152
+ def to_yaml( options = {} )
117
153
  RCAP.attribute_values_to_hash(
118
- [ RESOURCE_DESC_YAML, self.resource_desc ],
119
- [ URI_YAML, self.uri ],
120
- [ MIME_TYPE_YAML, self.mime_type ],
121
- [ DEREF_URI_YAML, self.deref_uri ],
122
- [ SIZE_YAML, self.size ],
123
- [ DIGEST_YAML, self.digest ]
124
- ).to_yaml( options )
154
+ [ RESOURCE_DESC_YAML, @resource_desc ],
155
+ [ URI_YAML, @uri ],
156
+ [ MIME_TYPE_YAML, @mime_type ],
157
+ [ DEREF_URI_YAML, @deref_uri ],
158
+ [ SIZE_YAML, @size ],
159
+ [ DIGEST_YAML, @digest ]).to_yaml( options )
125
160
  end
126
161
 
127
- def self.from_yaml_data( resource_yaml_data ) # :nodoc:
162
+ # @param [Hash] resource_yaml_data
163
+ # @return [Resource]
164
+ def self.from_yaml_data( resource_yaml_data )
128
165
  self.new(
129
166
  :resource_desc => reource_yaml_data[ RESOURCE_DESC_YAML ],
130
167
  :uri => reource_yaml_data[ URI_YAML ],
@@ -135,24 +172,27 @@ module RCAP
135
172
  )
136
173
  end
137
174
 
138
- RESOURCE_DESC_KEY = 'resource_desc' # :nodoc:
139
- URI_KEY = 'uri' # :nodoc:
140
- MIME_TYPE_KEY = 'mime_type' # :nodoc:
141
- DEREF_URI_KEY = 'deref_uri' # :nodoc:
142
- SIZE_KEY = 'size' # :nodoc:
143
- DIGEST_KEY = 'digest' # :nodoc:
175
+ RESOURCE_DESC_KEY = 'resource_desc'
176
+ URI_KEY = 'uri'
177
+ MIME_TYPE_KEY = 'mime_type'
178
+ DEREF_URI_KEY = 'deref_uri'
179
+ SIZE_KEY = 'size'
180
+ DIGEST_KEY = 'digest'
144
181
 
145
- def to_h # :nodoc:
182
+ # @return [Hash]
183
+ def to_h
146
184
  RCAP.attribute_values_to_hash(
147
- [ RESOURCE_DESC_KEY, self.resource_desc ],
148
- [ URI_KEY, self.uri],
149
- [ MIME_TYPE_KEY, self.mime_type],
150
- [ DEREF_URI_KEY, self.deref_uri],
151
- [ SIZE_KEY, self.size ],
152
- [ DIGEST_KEY, self.digest ])
185
+ [ RESOURCE_DESC_KEY, @resource_desc ],
186
+ [ URI_KEY, @uri],
187
+ [ MIME_TYPE_KEY, @mime_type],
188
+ [ DEREF_URI_KEY, @deref_uri],
189
+ [ SIZE_KEY, @size ],
190
+ [ DIGEST_KEY, @digest ])
153
191
  end
154
192
 
155
- def self.from_h( resource_hash ) # :nodoc:
193
+ # @param [Hash] resource_hash
194
+ # @return [Resource]
195
+ def self.from_h( resource_hash )
156
196
  self.new(
157
197
  :resource_desc => resource_hash[ RESOURCE_DESC_KEY ],
158
198
  :uri => resource_hash[ URI_KEY ],