Project

General

Profile

Feature #10701

Class:Array 2 New methods

Added by kruiserx (Eugene Kuhn) about 6 years ago. Updated about 6 years ago.

Status:
Open
Priority:
Normal
Assignee:
-
Target version:
-
[ruby-core:67365]

Description

Hi,

New to this, but this is an Array method that I use a lot and thought it might be included in a release, it's basic, but very helpful when you need to rotate certain defined values ie. log rotation with monthly timestamps

class Array
    def next(value)
        #Returns next element value (and loop to the beginning if last element is matched ) based on first input found. if not found, returns first value of array
        self[((self.index(value)||-1)+1)%self.size]
    end 
    def prev(value)
        #Returns previous element value (and loop to the end if first element is matched ) based on first input found. if not found, returns first value of array
        self[((self.index(value)||1)-1)%self.size]
    end
end


arr1 = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']

puts arr1.next("")    #=> returns "Jan"
puts arr1.prev("")    #=> returns "Jan"
puts arr1.next("Apr") #=> returns "May"
puts arr1.next("Dec") #=> returns "Jan"
puts arr1.prev("Jan") #=> returns "Dec"
puts arr1.prev("Apr") #=> returns "Mar"

Also available in: Atom PDF