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