Sha256: dda2c18896c22d66945ac1533ca8a5c4240ce05e72ed9949264839e787742522

Contents?: true

Size: 969 Bytes

Versions: 11

Compression:

Stored size: 969 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
  # Around 10% faster than the above.
  #
  # Returns a copy.
  #
  def clustered_uniq_fast
    result = []
    self.inject(nil) do |last, element|
      if last == element
        last
      else
        result << element && element
      end
    end
    result
  end

  # Accesses a random element of this array.
  #
  # TODO Remove?
  #
  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

11 entries across 11 versions & 1 rubygems

Version Path
picky-0.12.1 lib/picky/extensions/array.rb
picky-0.12.0 lib/picky/extensions/array.rb
picky-0.11.2 lib/picky/extensions/array.rb
picky-0.11.1 lib/picky/extensions/array.rb
picky-0.11.0 lib/picky/extensions/array.rb
picky-0.10.5 lib/picky/extensions/array.rb
picky-0.10.4 lib/picky/extensions/array.rb
picky-0.10.2 lib/picky/extensions/array.rb
picky-0.10.1 lib/picky/extensions/array.rb
picky-0.10.0 lib/picky/extensions/array.rb
picky-0.9.4 lib/picky/extensions/array.rb