43 lines
1.1 KiB
JavaScript
43 lines
1.1 KiB
JavaScript
|
/**
|
||
|
* @fileoverview Define the cursor which ignores the first few tokens.
|
||
|
* @author Toru Nagashima
|
||
|
*/
|
||
|
"use strict";
|
||
|
|
||
|
//------------------------------------------------------------------------------
|
||
|
// Requirements
|
||
|
//------------------------------------------------------------------------------
|
||
|
|
||
|
const DecorativeCursor = require("./decorative-cursor");
|
||
|
|
||
|
//------------------------------------------------------------------------------
|
||
|
// Exports
|
||
|
//------------------------------------------------------------------------------
|
||
|
|
||
|
/**
|
||
|
* The decorative cursor which ignores the first few tokens.
|
||
|
*/
|
||
|
module.exports = class SkipCursor extends DecorativeCursor {
|
||
|
|
||
|
/**
|
||
|
* Initializes this cursor.
|
||
|
* @param {Cursor} cursor - The cursor to be decorated.
|
||
|
* @param {number} count - The count of tokens this cursor skips.
|
||
|
*/
|
||
|
constructor(cursor, count) {
|
||
|
super(cursor);
|
||
|
this.count = count;
|
||
|
}
|
||
|
|
||
|
/** @inheritdoc */
|
||
|
moveNext() {
|
||
|
while (this.count > 0) {
|
||
|
this.count -= 1;
|
||
|
if (!super.moveNext()) {
|
||
|
return false;
|
||
|
}
|
||
|
}
|
||
|
return super.moveNext();
|
||
|
}
|
||
|
};
|