Module: CoreExtensions::Array
- Defined in:
- lib/core_ext.rb
Overview
ARRAY ###########################################################################################
Instance Method Summary collapse
- #deep_each(&blk) ⇒ Object
- #deep_reject(&blk) ⇒ Object
- #deep_reject!(&blk) ⇒ Object
- #except(*vals) ⇒ Object
- #except!(*vals) ⇒ Object
- #force_utf8 ⇒ Object
- #group_index_by(&blk) ⇒ Object
Instance Method Details
#deep_each(&blk) ⇒ Object
97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
# 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) ⇒ Object
79 80 81 |
# File 'lib/core_ext.rb', line 79 def deep_reject(&blk) dup.deep_reject!(&blk) end |
#deep_reject!(&blk) ⇒ Object
83 84 85 86 87 88 89 90 91 92 93 94 95 |
# 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) ⇒ Object
59 60 61 |
# File 'lib/core_ext.rb', line 59 def except(*vals) dup.except!(*vals) end |
#except!(*vals) ⇒ Object
54 55 56 57 |
# File 'lib/core_ext.rb', line 54 def except!(*vals) vals.each { |v| delete(v) } self end |
#force_utf8 ⇒ Object
113 114 115 |
# 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) ⇒ Object
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# 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 |