You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.1 KiB
40 lines
1.1 KiB
/** |
|
* @fileoverview Define the cursor which limits the number of tokens. |
|
* @author Toru Nagashima |
|
*/ |
|
"use strict"; |
|
|
|
//------------------------------------------------------------------------------ |
|
// Requirements |
|
//------------------------------------------------------------------------------ |
|
|
|
const DecorativeCursor = require("./decorative-cursor"); |
|
|
|
//------------------------------------------------------------------------------ |
|
// Exports |
|
//------------------------------------------------------------------------------ |
|
|
|
/** |
|
* The decorative cursor which limits the number of tokens. |
|
*/ |
|
module.exports = class LimitCursor extends DecorativeCursor { |
|
|
|
/** |
|
* Initializes this cursor. |
|
* @param {Cursor} cursor The cursor to be decorated. |
|
* @param {number} count The count of tokens this cursor iterates. |
|
*/ |
|
constructor(cursor, count) { |
|
super(cursor); |
|
this.count = count; |
|
} |
|
|
|
/** @inheritdoc */ |
|
moveNext() { |
|
if (this.count > 0) { |
|
this.count -= 1; |
|
return super.moveNext(); |
|
} |
|
return false; |
|
} |
|
};
|
|
|