Module: CoreExtensions::Array

Defined in:
lib/core_ext.rb

Overview

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

Instance Method Summary collapse

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_utf8Object



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