Home Manual Reference Source

src/Iterator.js


export class Iterator {

	constructor ( node ) {
		this.node = node;
	}

	next ( ) {
		return new Iterator( this.node.next ) ;
	}

	prev ( ) {
		return new Iterator( this.node.sibling.next.sibling ) ;
	}

	value ( ) {
		return this.node.value ;
	}

	reversed ( ) {
		return new Iterator( this.node.sibling ) ;
	}

	skip ( n ) {

		let node = this.node;

		for ( let i = 0 ; i < n ; ++i ) node = node.next;

		return new Iterator( node ) ;

	}

	rewind ( n ) {

		let node = this.node.sibling;

		for ( let i = 0 ; i < n ; ++i ) node = node.next;

		return new Iterator( node.sibling ) ;

	}

}