1 /** 2 * com.sekati.data.LoopIterator 3 * @version 1.0.0 4 * @author jason m horwitz | sekati.com 5 * Copyright (C) 2007 jason m horwitz, Sekat LLC. All Rights Reserved. 6 * Released under the MIT License: http://www.opensource.org/licenses/mit-license.php 7 */ 8 9 import com.sekati.data.Iterator; 10 11 /** 12 * Loopable Iterator Class. 13 */ 14 class com.sekati.data.LoopIterator extends Iterator { 15 16 /** 17 * LoopIterator Constructor 18 * @param data (Array) data array 19 */ 20 public function LoopIterator(data:Array) { 21 super( data ); 22 } 23 24 /** 25 * override - LoopIterator always has a next element. 26 * @return Boolean 27 */ 28 public function hasNext():Boolean { 29 return true; 30 } 31 32 /** 33 * override - LoopIterator always has a previous element. 34 * @return Boolean 35 */ 36 public function hasPrevious():Boolean { 37 return true; 38 } 39 40 /** 41 * override - LoopIterator starts at beginning once loops is complete. 42 * @return Object 43 */ 44 public function next():Object { 45 if(super.hasNext( )) { 46 return super.next( ); 47 } else { 48 super.reset( ); 49 return super.next( ); 50 } 51 } 52 53 /** 54 * override - LoopIterator starts at end once loops is hits the begining. 55 */ 56 public function previous():Object { 57 if(super.hasPrevious( )) { 58 return super.previous( ); 59 } else { 60 _i = _data.length - 1; 61 return _data[_i]; 62 } 63 } 64 65 /** 66 * Check is Iterator is at 0 index. 67 * @return Boolean 68 */ 69 public function isAtStart():Boolean { 70 return _i == 0; 71 } 72 73 /** 74 * Check if Iterator is at last index. 75 * @return Boolean 76 */ 77 public function isAtEnd():Boolean { 78 return _i == _data.length - 1; 79 } 80 }