PHP 8.2.30
Preview: cursor.js Size: 2.15 KB
/home/byroehnu/easepaybiz.easetack.com/node_modules/eslint/lib/languages/js/source-code/token-store/cursor.js

/**
 * @fileoverview Define the abstract class about cursors which iterate tokens.
 * @author Toru Nagashima
 */
"use strict";

//------------------------------------------------------------------------------
// Exports
//------------------------------------------------------------------------------

/**
 * The abstract class about cursors which iterate tokens.
 *
 * This class has 2 abstract methods.
 *
 * - `current: Token | Comment | null` ... The current token.
 * - `moveNext(): boolean` ... Moves this cursor to the next token. If the next token didn't exist, it returns `false`.
 *
 * This is similar to ES2015 Iterators.
 * However, Iterators were slow (at 2017-01), so I created this class as similar to C# IEnumerable.
 *
 * There are the following known sub classes.
 *
 * - ForwardTokenCursor .......... The cursor which iterates tokens only.
 * - BackwardTokenCursor ......... The cursor which iterates tokens only in reverse.
 * - ForwardTokenCommentCursor ... The cursor which iterates tokens and comments.
 * - BackwardTokenCommentCursor .. The cursor which iterates tokens and comments in reverse.
 * - DecorativeCursor
 *     - FilterCursor ............ The cursor which ignores the specified tokens.
 *     - SkipCursor .............. The cursor which ignores the first few tokens.
 *     - LimitCursor ............. The cursor which limits the count of tokens.
 *
 */
module.exports = class Cursor {
	/**
	 * Initializes this cursor.
	 */
	constructor() {
		this.current = null;
	}

	/**
	 * Gets the first token.
	 * This consumes this cursor.
	 * @returns {Token|Comment} The first token or null.
	 */
	getOneToken() {
		return this.moveNext() ? this.current : null;
	}

	/**
	 * Gets the first tokens.
	 * This consumes this cursor.
	 * @returns {(Token|Comment)[]} All tokens.
	 */
	getAllTokens() {
		const tokens = [];

		while (this.moveNext()) {
			tokens.push(this.current);
		}

		return tokens;
	}

	/**
	 * Moves this cursor to the next token.
	 * @returns {boolean} `true` if the next token exists.
	 * @abstract
	 */
	/* c8 ignore next */
	// eslint-disable-next-line class-methods-use-this -- Unused
	moveNext() {
		throw new Error("Not implemented.");
	}
};

Directory Contents

Dirs: 0 × Files: 14

Name Size Perms Modified Actions
127 B lr--r--r-- 2026-03-14 01:49:12
Edit Download
1.83 KB lrw-r--r-- 2026-03-05 00:20:11
Edit Download
1.57 KB lrw-r--r-- 2026-03-05 00:20:12
Edit Download
2.15 KB lrw-r--r-- 2026-03-05 00:20:16
Edit Download
3.63 KB lrw-r--r-- 2026-03-05 00:20:16
Edit Download
953 B lrw-r--r-- 2026-03-05 00:20:16
Edit Download
1.08 KB lrw-r--r-- 2026-03-05 00:20:18
Edit Download
1.87 KB lrw-r--r-- 2026-03-05 00:20:18
Edit Download
1.64 KB lrw-r--r-- 2026-03-05 00:20:18
Edit Download
21.06 KB lrw-r--r-- 2026-03-05 00:20:20
Edit Download
1.00 KB lrw-r--r-- 2026-03-05 00:20:21
Edit Download
1.54 KB lrw-r--r-- 2026-03-05 00:20:24
Edit Download
1.04 KB lrw-r--r-- 2026-03-05 00:20:24
Edit Download
3.78 KB lrw-r--r-- 2026-03-05 00:20:24
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).