module CoreExtensions::Array

ARRAY ###########################################################################################

Public Instance Methods

deep_each(&blk) click to toggle source
# File lib/core_ext.rb, line 97
def deep_each(&blk)
  idx = 0
  while idx < length do
    val = self[idx]
    if blk.arity == 3
      blk.call(idx, val, self)
      val = self[idx]
    else
      blk.call(idx, val)
    end
    val.deep_each(&blk)  if val.respond_to?(:deep_each)
    idx += 1
  end
  self
end
deep_reject(&blk) click to toggle source
# File lib/core_ext.rb, line 79
def deep_reject(&blk)
  dup.deep_reject!(&blk)
end
deep_reject!(&blk) click to toggle source
# File lib/core_ext.rb, line 83
def deep_reject!(&blk)
  idx = 0
  while idx < length do
    val = self[idx]
    val.deep_reject!(&blk)  if val.respond_to?(:deep_reject!)
    if blk.call(idx, val)
      delete_at(idx)
    else
      idx += 1
    end
  end
  self
end
except(*vals) click to toggle source
# File lib/core_ext.rb, line 59
def except(*vals)
  dup.except!(*vals)
end
except!(*vals) click to toggle source
# File lib/core_ext.rb, line 54
def except!(*vals)
  vals.each { |v|  delete(v) }
  self
end
force_utf8() click to toggle source
# File lib/core_ext.rb, line 113
def force_utf8
  map { |el|  el.respond_to?(:force_utf8) ? el.force_utf8 : el }
end
group_index_by(&blk) click to toggle source
# File lib/core_ext.rb, line 63
def group_index_by(&blk)
  index = {}
  group_by(&blk).each do |name, group|
    if group.length == 1
      index[group[0]] = name
      next
    end

    idx_digits = Math.log10(group.length).floor + 1
    group.each.with_index do |obj, idx|
      index[obj] = [ name, "%0#{idx_digits}d" % (idx+1) ]
    end
  end
  index
end