Project

General

Profile

Feature #10701

Updated by nobu (Nobuyoshi Nakada) almost 10 years ago

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 

 ~~~ruby 
 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" 
 ~~~

Back