| /** | 
|  * @fileoverview Define the abstract class about cursors which manipulate another cursor. | 
|  * @author Toru Nagashima | 
|  */ | 
| "use strict"; | 
|   | 
| //------------------------------------------------------------------------------ | 
| // Requirements | 
| //------------------------------------------------------------------------------ | 
|   | 
| const Cursor = require("./cursor"); | 
|   | 
| //------------------------------------------------------------------------------ | 
| // Exports | 
| //------------------------------------------------------------------------------ | 
|   | 
| /** | 
|  * The abstract class about cursors which manipulate another cursor. | 
|  */ | 
| module.exports = class DecorativeCursor extends Cursor { | 
|   | 
|     /** | 
|      * Initializes this cursor. | 
|      * @param {Cursor} cursor The cursor to be decorated. | 
|      */ | 
|     constructor(cursor) { | 
|         super(); | 
|         this.cursor = cursor; | 
|     } | 
|   | 
|     /** @inheritdoc */ | 
|     moveNext() { | 
|         const retv = this.cursor.moveNext(); | 
|   | 
|         this.current = this.cursor.current; | 
|   | 
|         return retv; | 
|     } | 
| }; |