lib/rcap/base/area.rb in rcap-2.4.1 vs lib/rcap/base/area.rb in rcap-2.5.0
- old
+ new
@@ -2,25 +2,25 @@
module Base
class Area
include Validation
# @return [String] Textual description of area.
- attr_accessor( :area_desc )
+ attr_accessor(:area_desc)
# @return [Numeric] Expressed in feet above sea level
- attr_accessor( :altitude )
+ attr_accessor(:altitude)
# @return [Numeric] Expressed in feet above sea level.
- attr_accessor( :ceiling )
+ attr_accessor(:ceiling)
# @return [Array<Circle>]
- attr_reader( :circles )
+ attr_reader(:circles)
# @return [Array<Geocode>]
- attr_reader( :geocodes )
+ attr_reader(:geocodes)
# @return [Array<Polygon>]
- attr_reader( :polygons )
+ attr_reader(:polygons)
- validates_presence_of( :area_desc )
- validates_collection_of( :circles, :geocodes, :polygons, allow_empty: true )
- validates_dependency_of( :ceiling, on: :altitude )
+ validates_presence_of(:area_desc)
+ validates_collection_of(:circles, :geocodes, :polygons, allow_empty: true)
+ validates_dependency_of(:ceiling, on: :altitude)
XML_ELEMENT_NAME = 'area'
AREA_DESC_ELEMENT_NAME = 'areaDesc'
ALTITUDE_ELEMENT_NAME = 'altitude'
CEILING_ELEMENT_NAME = 'ceiling'
@@ -40,154 +40,152 @@
@ceiling = nil
@circles = []
@geocodes = []
@polygons = []
- yield( self ) if block_given?
+ yield(self) if block_given?
end
# Creates a new {Polygon} object and adds it to the {#polygons} array.
#
# @return [Polygon]
def add_polygon
- self.polygon_class.new.tap do |polygon|
- yield( polygon ) if block_given?
+ polygon_class.new.tap do |polygon|
+ yield(polygon) if block_given?
@polygons << polygon
end
end
# Creates a new {Circle} object and adds it to the {#circles} array.
#
# @return [Circle]
def add_circle
- self.circle_class.new.tap do |circle|
- yield( circle ) if block_given?
+ circle_class.new.tap do |circle|
+ yield(circle) if block_given?
@circles << circle
end
end
# Creates a new {Geocode} object and adds it to the {#geocodes} array.
#
# @return [Geocode]
def add_geocode
- self.geocode_class.new do |geocode|
- yield( geocode ) if block_given?
+ geocode_class.new do |geocode|
+ yield(geocode) if block_given?
@geocodes << geocode
end
end
- def self.from_xml_element( area_xml_element )
- self.new do |area|
- area.area_desc = RCAP.xpath_text( area_xml_element, AREA_DESC_XPATH, area.xmlns )
- area.altitude = RCAP.to_f_if_given( RCAP.xpath_text( area_xml_element, ALTITUDE_XPATH, area.xmlns ))
- area.ceiling = RCAP.to_f_if_given( RCAP.xpath_text( area_xml_element, CEILING_XPATH, area.xmlns ))
+ def self.from_xml_element(area_xml_element)
+ new do |area|
+ area.area_desc = RCAP.xpath_text(area_xml_element, AREA_DESC_XPATH, area.xmlns)
+ area.altitude = RCAP.to_f_if_given(RCAP.xpath_text(area_xml_element, ALTITUDE_XPATH, area.xmlns))
+ area.ceiling = RCAP.to_f_if_given(RCAP.xpath_text(area_xml_element, CEILING_XPATH, area.xmlns))
- RCAP.xpath_match( area_xml_element, area.circle_class::XPATH, area.xmlns ).each do |circle_element|
- area.circles << area.circle_class.from_xml_element( circle_element )
+ RCAP.xpath_match(area_xml_element, area.circle_class::XPATH, area.xmlns).each do |circle_element|
+ area.circles << area.circle_class.from_xml_element(circle_element)
end
- RCAP.xpath_match( area_xml_element, area.geocode_class::XPATH, area.xmlns ).each do |geocode_element|
- area.geocodes << area.geocode_class.from_xml_element( geocode_element )
+ RCAP.xpath_match(area_xml_element, area.geocode_class::XPATH, area.xmlns).each do |geocode_element|
+ area.geocodes << area.geocode_class.from_xml_element(geocode_element)
end
- RCAP.xpath_match( area_xml_element, area.polygon_class::XPATH, area.xmlns ).each do |polygon_element|
- area.polygons << area.polygon_class.from_xml_element( polygon_element )
+ RCAP.xpath_match(area_xml_element, area.polygon_class::XPATH, area.xmlns).each do |polygon_element|
+ area.polygons << area.polygon_class.from_xml_element(polygon_element)
end
end
end
# @return [REXML::Element]
def to_xml_element
- xml_element = REXML::Element.new( XML_ELEMENT_NAME )
- xml_element.add_element( AREA_DESC_ELEMENT_NAME ).add_text( @area_desc.to_s )
- add_to_xml_element = lambda do |element, object|
- element.add_element( object.to_xml_element )
- element
+ REXML::Element.new(XML_ELEMENT_NAME).tap do |xml_element|
+ xml_element.add_element(AREA_DESC_ELEMENT_NAME).add_text(@area_desc.to_s)
+ add_to_xml_element = lambda do |element, object|
+ element.add_element(object.to_xml_element)
+ element
+ end
+ @polygons.inject(xml_element, &add_to_xml_element)
+ @circles.inject(xml_element, &add_to_xml_element)
+ @geocodes.inject(xml_element, &add_to_xml_element)
+ xml_element.add_element(ALTITUDE_ELEMENT_NAME).add_text(@altitude.to_s) unless @altitude.blank?
+ xml_element.add_element(CEILING_ELEMENT_NAME).add_text(@ceiling.to_s) unless @altitude.blank?
end
- @polygons.inject( xml_element, &add_to_xml_element )
- @circles.inject( xml_element, &add_to_xml_element )
- @geocodes.inject( xml_element, &add_to_xml_element )
- xml_element.add_element( ALTITUDE_ELEMENT_NAME ).add_text( @altitude.to_s ) unless @altitude.blank?
- xml_element.add_element( CEILING_ELEMENT_NAME ).add_text( @ceiling.to_s ) unless @altitude.blank?
- xml_element
end
# @return [String] XML representation of the Area
def to_xml
- self.to_xml_element.to_s
+ to_xml_element.to_s
end
# Implements an equality operator for the Area object. Two Area objects are equal if all their attributes are equal.
#
# @param [Area] other Area object to compare
# @return [true,false]
- def ==( other )
- comparison_attributes = lambda{ |area| [ area.area_desc, area.altitude, area.ceiling, area.circles, area.geocodes, area.polygons ]}
- comparison_attributes.call( self ) == comparison_attributes.call( other )
+ def ==(other)
+ comparison_attributes = lambda { |area| [area.area_desc, area.altitude, area.ceiling, area.circles, area.geocodes, area.polygons] }
+ comparison_attributes.call(self) == comparison_attributes.call(other)
end
# @return [String]
def inspect
- area_inspect = "Area Description: #{ @area_desc }\n"+
- "Polygons:\n"+
- @polygons.map{ |polygon| " " + polygon.inspect }.join("\n" )+"\n"+
- "Circles: #{ @circles.inspect }\n"+
+ area_inspect = "Area Description: #{ @area_desc }\n"\
+ "Polygons:\n" + @polygons.map { |polygon| ' ' + polygon.inspect }.join("\n") + "\n"\
+ "Circles: #{ @circles.inspect }\n"\
"Geocodes: #{ @geocodes.inspect }\n"
- RCAP.format_lines_for_inspect( 'AREA', area_inspect )
+ RCAP.format_lines_for_inspect('AREA', area_inspect)
end
# Returns the area description
#
# @return [String]
def to_s
@area_desc
end
-
AREA_DESC_YAML = 'Area Description'
ALTITUDE_YAML = 'Altitude'
CEILING_YAML = 'Ceiling'
CIRCLES_YAML = 'Circles'
GEOCODES_YAML = 'Geocodes'
POLYGONS_YAML = 'Polygons'
- # @return [Hash]
+ # @return [Hash]
def to_yaml_data
- RCAP.attribute_values_to_hash( [ AREA_DESC_YAML, @area_desc ],
- [ ALTITUDE_YAML, @altitude ],
- [ CEILING_YAML, @ceiling ],
- [ CIRCLES_YAML, @circles.map{ |circle| circle.to_a }],
- [ GEOCODES_YAML, @geocodes.inject({}){|h,geocode| h.merge( geocode.name => geocode.value )}],
- [ POLYGONS_YAML, @polygons.map( &:to_yaml_data )])
+ RCAP.attribute_values_to_hash([AREA_DESC_YAML, @area_desc],
+ [ALTITUDE_YAML, @altitude],
+ [CEILING_YAML, @ceiling],
+ [CIRCLES_YAML, @circles.map { |circle| circle.to_a }],
+ [GEOCODES_YAML, @geocodes.reduce({}) { |h, geocode| h.merge(geocode.name => geocode.value) }],
+ [POLYGONS_YAML, @polygons.map(&:to_yaml_data)])
end
# @return [String] YAML representation of object
- def to_yaml( options = {} )
- self.to_yaml_data.to_yaml( options )
+ def to_yaml(options = {})
+ to_yaml_data.to_yaml(options)
end
# @param [Hash] area_yaml_data
# @return [Area]
- def self.from_yaml_data( area_yaml_data )
- self.new do |area|
- area.area_desc = area_yaml_data[ AREA_DESC_YAML ]
- area.altitude = area_yaml_data[ ALTITUDE_YAML ]
- area.ceiling = area_yaml_data[ CEILING_YAML ]
+ def self.from_yaml_data(area_yaml_data)
+ new do |area|
+ area.area_desc = area_yaml_data[AREA_DESC_YAML]
+ area.altitude = area_yaml_data[ALTITUDE_YAML]
+ area.ceiling = area_yaml_data[CEILING_YAML]
- Array( area_yaml_data[ CIRCLES_YAML ]).each do |circle_yaml_data|
- area.circles << area.circle_class.from_yaml_data( circle_yaml_data )
+ Array(area_yaml_data[CIRCLES_YAML]).each do |circle_yaml_data|
+ area.circles << area.circle_class.from_yaml_data(circle_yaml_data)
end
- Array( area_yaml_data[ GEOCODES_YAML ]).each do |name, value|
+ Array(area_yaml_data[GEOCODES_YAML]).each do |name, value|
area.add_geocode do |geocode|
geocode.name = name
geocode.value = value
end
end
- Array( area_yaml_data[ POLYGONS_YAML ]).each do |polyon_yaml_data|
- area.polygons << area.polygon_class.from_yaml_data( polyon_yaml_data )
+ Array(area_yaml_data[POLYGONS_YAML]).each do |polyon_yaml_data|
+ area.polygons << area.polygon_class.from_yaml_data(polyon_yaml_data)
end
end
end
AREA_DESC_KEY = 'area_desc'
@@ -197,37 +195,37 @@
GEOCODES_KEY = 'geocodes'
POLYGONS_KEY = 'polygons'
# @param [Hash] area_hash
# @return [Area]
- def self.from_h( area_hash )
- self.new do |area|
- area.area_desc = area_hash[ AREA_DESC_KEY ]
- area.altitude = area_hash[ ALTITUDE_KEY ]
- area.ceiling = area_hash[ CEILING_KEY ]
+ def self.from_h(area_hash)
+ new do |area|
+ area.area_desc = area_hash[AREA_DESC_KEY]
+ area.altitude = area_hash[ALTITUDE_KEY]
+ area.ceiling = area_hash[CEILING_KEY]
- Array( area_hash[ CIRCLES_KEY ]).each do |circle_array|
- area.circles << area.circle_class.from_a( circle_array )
+ Array(area_hash[CIRCLES_KEY]).each do |circle_array|
+ area.circles << area.circle_class.from_a(circle_array)
end
- Array( area_hash[ GEOCODES_KEY ]).each do |geocode_hash|
- area.geocodes << area.geocode_class.from_h( geocode_hash )
+ Array(area_hash[GEOCODES_KEY]).each do |geocode_hash|
+ area.geocodes << area.geocode_class.from_h(geocode_hash)
end
- Array( area_hash[ POLYGONS_KEY ]).each do |polygon_hash|
- area.polygons << area.polygon_class.from_h( polygon_hash )
+ Array(area_hash[POLYGONS_KEY]).each do |polygon_hash|
+ area.polygons << area.polygon_class.from_h(polygon_hash)
end
end
end
# @return [Hash]
def to_h
- RCAP.attribute_values_to_hash( [ AREA_DESC_KEY, @area_desc ],
- [ ALTITUDE_KEY, @altitude ],
- [ CEILING_KEY, @ceiling ],
- [ CIRCLES_KEY, @circles.map{ |circle| circle.to_a }],
- [ GEOCODES_KEY, @geocodes.map{ |geocode| geocode.to_h }],
- [ POLYGONS_KEY, @polygons.map{ |polygon| polygon.to_h }])
+ RCAP.attribute_values_to_hash([AREA_DESC_KEY, @area_desc],
+ [ALTITUDE_KEY, @altitude],
+ [CEILING_KEY, @ceiling],
+ [CIRCLES_KEY, @circles.map { |circle| circle.to_a }],
+ [GEOCODES_KEY, @geocodes.map { |geocode| geocode.to_h }],
+ [POLYGONS_KEY, @polygons.map { |polygon| polygon.to_h }])
end
end
end
end