| /** | 
|  * @fileoverview Define the cursor which iterates tokens only. | 
|  * @author Toru Nagashima | 
|  */ | 
| "use strict"; | 
|   | 
| //------------------------------------------------------------------------------ | 
| // Requirements | 
| //------------------------------------------------------------------------------ | 
|   | 
| const Cursor = require("./cursor"); | 
| const utils = require("./utils"); | 
|   | 
| //------------------------------------------------------------------------------ | 
| // Exports | 
| //------------------------------------------------------------------------------ | 
|   | 
| /** | 
|  * The cursor which iterates tokens only. | 
|  */ | 
| module.exports = class ForwardTokenCursor extends Cursor { | 
|   | 
|     /** | 
|      * Initializes this cursor. | 
|      * @param {Token[]} tokens The array of tokens. | 
|      * @param {Comment[]} comments The array of comments. | 
|      * @param {Object} indexMap The map from locations to indices in `tokens`. | 
|      * @param {number} startLoc The start location of the iteration range. | 
|      * @param {number} endLoc The end location of the iteration range. | 
|      */ | 
|     constructor(tokens, comments, indexMap, startLoc, endLoc) { | 
|         super(); | 
|         this.tokens = tokens; | 
|         this.index = utils.getFirstIndex(tokens, indexMap, startLoc); | 
|         this.indexEnd = utils.getLastIndex(tokens, indexMap, endLoc); | 
|     } | 
|   | 
|     /** @inheritdoc */ | 
|     moveNext() { | 
|         if (this.index <= this.indexEnd) { | 
|             this.current = this.tokens[this.index]; | 
|             this.index += 1; | 
|             return true; | 
|         } | 
|         return false; | 
|     } | 
|   | 
|     /* | 
|      * | 
|      * Shorthand for performance. | 
|      * | 
|      */ | 
|   | 
|     /** @inheritdoc */ | 
|     getOneToken() { | 
|         return (this.index <= this.indexEnd) ? this.tokens[this.index] : null; | 
|     } | 
|   | 
|     /** @inheritdoc */ | 
|     getAllTokens() { | 
|         return this.tokens.slice(this.index, this.indexEnd + 1); | 
|     } | 
| }; |