12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- /**
- * @fileoverview Define the cursor which iterates tokens only in reverse.
- * @author Toru Nagashima
- */
- "use strict";
-
- //------------------------------------------------------------------------------
- // Requirements
- //------------------------------------------------------------------------------
-
- const Cursor = require("./cursor");
- const utils = require("./utils");
-
- //------------------------------------------------------------------------------
- // Exports
- //------------------------------------------------------------------------------
-
- /**
- * The cursor which iterates tokens only in reverse.
- */
- module.exports = class BackwardTokenCursor 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.getLastIndex(tokens, indexMap, endLoc);
- this.indexEnd = utils.getFirstIndex(tokens, indexMap, startLoc);
- }
-
- /** @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;
- }
- };
|