102 lines
1.9 KiB
Ruby
Vendored
102 lines
1.9 KiB
Ruby
Vendored
##
|
|
# Array
|
|
#
|
|
# ISO 15.2.12
|
|
class Array
|
|
##
|
|
# call-seq:
|
|
# array.each {|element| ... } -> self
|
|
# array.each -> Enumerator
|
|
#
|
|
# Calls the given block for each element of `self`
|
|
# and pass the respective element.
|
|
#
|
|
# ISO 15.2.12.5.10
|
|
def each(&block)
|
|
return to_enum(:each) unless block
|
|
|
|
idx = 0
|
|
while idx < length
|
|
yield self[idx]
|
|
idx += 1
|
|
end
|
|
self
|
|
end
|
|
|
|
##
|
|
# call-seq:
|
|
# array.each_index {|index| ... } -> self
|
|
# array.each_index -> Enumerator
|
|
#
|
|
# Calls the given block for each element of `self`
|
|
# and pass the index of the respective element.
|
|
#
|
|
# ISO 15.2.12.5.11
|
|
def each_index(&block)
|
|
return to_enum(:each_index) unless block
|
|
|
|
idx = 0
|
|
while idx < length
|
|
yield idx
|
|
idx += 1
|
|
end
|
|
self
|
|
end
|
|
|
|
##
|
|
# call-seq:
|
|
# array.collect! {|element| ... } -> self
|
|
# array.collect! -> new_enumerator
|
|
#
|
|
# Calls the given block for each element of `self`
|
|
# and pass the respective element. Each element will
|
|
# be replaced by the resulting values.
|
|
#
|
|
# ISO 15.2.12.5.7
|
|
def collect!(&block)
|
|
return to_enum(:collect!) unless block
|
|
|
|
idx = 0
|
|
len = size
|
|
while idx < len
|
|
self[idx] = block.call(self[idx])
|
|
idx += 1
|
|
end
|
|
self
|
|
end
|
|
|
|
##
|
|
# call-seq:
|
|
# array.map! {|element| ... } -> self
|
|
# array.map! -> new_enumerator
|
|
#
|
|
# Alias for collect!
|
|
#
|
|
# ISO 15.2.12.5.20
|
|
alias map! collect!
|
|
|
|
##
|
|
# call-seq:
|
|
# array.sort -> new_array
|
|
# array.sort {|a, b| ... } -> new_array
|
|
#
|
|
# Returns a new Array whose elements are those from `self`, sorted.
|
|
def sort(&block)
|
|
self.dup.sort!(&block)
|
|
end
|
|
|
|
##
|
|
# call-seq:
|
|
# array.deconstruct -> self
|
|
#
|
|
# Returns self. Used for array pattern matching in case/in expressions.
|
|
#
|
|
def deconstruct
|
|
self
|
|
end
|
|
|
|
##
|
|
# Array is enumerable
|
|
# ISO 15.2.12.3
|
|
include Enumerable
|
|
end
|