Sha256: 733e133f8fb2634b790b0592909473225629ef6d9ef54841c6f0410fa863fd9b

Contents?: true

Size: 668 Bytes

Versions: 12

Compression:

Stored size: 668 Bytes

Contents

# Extend Array with a sort_by_distance method.
class Array
  # This method creates a "distance" attribute on each object, calculates the
  # distance from the passed origin, and finally sorts the array by the
  # resulting distance.
  def sort_by_distance_from(origin, opts={})
    distance_attribute_name = opts.delete(:distance_attribute_name) || 'distance'
    self.each do |e|
      e.class.send(:attr_accessor, distance_attribute_name) if !e.respond_to?("#{distance_attribute_name}=")
      e.send("#{distance_attribute_name}=", e.distance_to(origin,opts))
    end
    self.sort!{|a,b|a.send(distance_attribute_name) <=> b.send(distance_attribute_name)}
  end
end

Version data entries

12 entries across 12 versions & 4 rubygems

Version Path
geokit-ar-0.0.1 lib/geokit-ar/core_extensions.rb
jackruss-geokit-rails3-0.1.5.1 lib/geokit-rails3/core_extensions.rb
geokit-rails3-0.1.5 lib/geokit-rails3/core_extensions.rb
geokit-rails3-1beta-0.3.1.beta1 lib/geokit-rails3-1beta/core_extensions.rb
geokit-rails3-1beta-0.2.0.beta1 lib/geokit-rails3/core_extensions.rb
geokit-rails3-0.1.3 lib/geokit-rails3/core_extensions.rb
geokit-rails3-0.1.2 lib/geokit-rails3/core_extensions.rb
geokit-rails3-0.1.1 lib/geokit-rails3/core_extensions.rb
geokit-rails3-0.1.0 lib/geokit-rails3/core_extensions.rb
geokit-rails3-0.0.5 lib/geokit-rails3/core_extensions.rb
geokit-rails3-0.0.4 lib/geokit-rails3/core_extensions.rb
geokit-rails3-0.0.3 lib/geokit-rails3/core_extensions.rb