Sha256: 14d101fb8bd804638b3db7254fc62d1f92a7aefd1e3fb1d092a51ce7bf774964

Contents?: true

Size: 871 Bytes

Versions: 15

Compression:

Stored size: 871 Bytes

Contents

# The Array class we all know and love.
#
class Array

  # Cluster-uniqs equal neighborly elements.
  #
  # Returns a copy.
  #
  def clustered_uniq
    self.inject([]) do |result, element|
      result << element if element != result.last
      result
    end
  end

  #
  #
  def map_with_index!
    each_with_index do |element, index| self[index] = yield(element, index); end
  end

  #
  #
  def map_with_index &block
    dup.map_with_index! &block
  end

  # Accesses a random element of this array.
  #
  def random
    self[Kernel.rand(self.length)]
  end

  # Sort the array using distance from levenshtein.
  #
  # Will raise if encounters not to_s-able element.
  #
  def sort_by_levenshtein! from
    from = from.to_s
    sort! do |this, that|
      Text::Levenshtein.distance(this.to_s, from) <=> Text::Levenshtein.distance(that.to_s, from)
    end
  end

end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
picky-0.3.0 lib/picky/extensions/array.rb
picky-0.2.4 lib/picky/extensions/array.rb
picky-0.2.3 lib/picky/extensions/array.rb
picky-0.2.2 lib/picky/extensions/array.rb
picky-0.2.1 lib/picky/extensions/array.rb
picky-0.2.0 lib/picky/extensions/array.rb
picky-0.1.0 lib/picky/extensions/array.rb
picky-0.0.9 lib/picky/extensions/array.rb
picky-0.0.8 lib/picky/extensions/array.rb
picky-0.0.7 lib/picky/extensions/array.rb
picky-0.0.6 lib/picky/extensions/array.rb
picky-0.0.5 lib/picky/extensions/array.rb
picky-0.0.4 lib/picky/extensions/array.rb
picky-0.0.3 lib/picky/extensions/array.rb
picky-0.0.2 lib/picky/extensions/array.rb