Sha256: 1e6f868c9b3c19a8e91fa384f8fbc4047bc2b32f098a9204740513557548ab07

Contents?: true

Size: 743 Bytes

Versions: 1

Compression:

Stored size: 743 Bytes

Contents

class Array
  autoload :HashBuilder,      'darthjee/core_ext/array/hash_builder'

  def procedural_join(mapper = proc(&:to_s))
    return '' if empty?
    list = dup
    prev = first
    list[0] = mapper.call(prev).to_s

    list.inject do |string, val|
      j = yield(prev, val) if block_given?
      "#{string}#{j}#{mapper.call(val)}".tap do
        prev = val
      end
    end
  end

  def chain_map(*methods, &block)
    result = methods.inject(self) do |array, method|
      array.map(&method)
    end

    return result unless block_given?
    result.map(&block)
  end

  def as_hash(keys)
    Array::HashBuilder.new(self, keys).build
  end

  def random
    self[rand(size)]
  end

  def random!
    self.slice!(rand(size))
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
darthjee-core_ext-1.5.1 lib/darthjee/core_ext/array.rb