lib/rcap/cap_1_0/circle.rb in rcap-1.3.1 vs lib/rcap/cap_1_0/circle.rb in rcap-2.0.0

- old
+ new

@@ -1,108 +1,10 @@ module RCAP module CAP_1_0 + # A Circle object is valid if # * it has a valid lattitude and longitude # * it has a radius with a value greater than zero - class Circle < Point - include Validation - - # @return [Numeric] Expresed in kilometers - attr_accessor( :radius ) - - validates_presence_of( :radius ) - validates_numericality_of( :radius , greater_than_or_equal: 0 ) - - XML_ELEMENT_NAME = 'circle' - - XPATH = 'cap:circle' - - # @param [Hash] attributes - # @option attributes [Numeric] :lattitude - # @option attributes [Numeric] :longitude - # @option attributes [Numeric] :radius - def initialize( attributes = {} ) - super( attributes ) - @radius = attributes[ :radius ] - end - - # Returns a string representation of the circle of the form - # lattitude,longitude radius - # - # @return [String] - def to_s - "#{ @lattitude },#{ @longitude } #{ @radius }" - end - - # @return [String] - def inspect - "(#{ self.to_s })" - end - - # @return [REXML::Element] - def to_xml_element - xml_element = REXML::Element.new( XML_ELEMENT_NAME ) - xml_element.add_text( self.to_s ) - xml_element - end - - # @return [String] - def to_xml - self.to_xml_element.to_s - end - - # Parses a circle string of the form - # lattitude,longitude radius - # - # @param [String] circle_string - # @return [Array(Float,Float,Float)] - def self.parse_circle_string( circle_string ) - coordinates, radius = circle_string.split( ' ' ) - lattitude, longitude = coordinates.split( ',' ) - [ lattitude, longitude, radius ].map{ |e| e.to_f } - end - - # @param [REXML::Element] circle_xml_element - # @return [Circle] - def self.from_xml_element( circle_xml_element ) - lattitude, longitude, radius = self.parse_circle_string( circle_xml_element.text ) - circle = self.new( :lattitude => lattitude, - :longitude => longitude, - :radius => radius ) - end - - # Two circles are equivalent if their lattitude, longitude and radius are equal. - # - # @param [Circle] other - # @return [true,false] - def ==( other ) - [ @lattitude, @longitude, @radius ] == [ other.lattitude, other.longitude, other.radius ] - end - - # @param [Array(Numeric, Numeric, Numeric)] circle_yaml_data lattitude, longitude, radius - # @return [Circle] - def self.from_yaml_data( circle_yaml_data ) - lattitude, longitude, radius = circle_yaml_data - self.new( :lattitude => lattitude, :longitude => longitude, :radius => radius ) - end - - RADIUS_KEY = 'radius' - LATTITUDE_KEY = 'lattitude' - LONGITUDE_KEY = 'longitude' - - # @return [Hash] - def to_h - RCAP.attribute_values_to_hash( [ RADIUS_KEY, @radius ], - [ LATTITUDE_KEY, @lattitude ], - [ LONGITUDE_KEY, @longitude ]) - end - - # @param [Hash] - # @return [Circle] - def self.from_h( circle_hash ) - self.new( :radius => circle_hash[ RADIUS_KEY ], - :lattitude => circle_hash[ LATTITUDE_KEY ], - :longitude => circle_hash[ LONGITUDE_KEY ]) - end + class Circle < RCAP::Base::Circle end end end