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.
45 lines
950 B
45 lines
950 B
/** |
|
* @fileoverview A class of identifiers generator for code path segments. |
|
* |
|
* Each rule uses the identifier of code path segments to store additional |
|
* information of the code path. |
|
* |
|
* @author Toru Nagashima |
|
*/ |
|
|
|
"use strict"; |
|
|
|
//------------------------------------------------------------------------------ |
|
// Public Interface |
|
//------------------------------------------------------------------------------ |
|
|
|
/** |
|
* A generator for unique ids. |
|
*/ |
|
class IdGenerator { |
|
|
|
/** |
|
* @param {string} prefix Optional. A prefix of generated ids. |
|
*/ |
|
constructor(prefix) { |
|
this.prefix = String(prefix); |
|
this.n = 0; |
|
} |
|
|
|
/** |
|
* Generates id. |
|
* @returns {string} A generated id. |
|
*/ |
|
next() { |
|
this.n = 1 + this.n | 0; |
|
|
|
/* istanbul ignore if */ |
|
if (this.n < 0) { |
|
this.n = 1; |
|
} |
|
|
|
return this.prefix + this.n; |
|
} |
|
} |
|
|
|
module.exports = IdGenerator;
|
|
|