46 lines
		
	
	
		
			967 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			967 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/**
 | 
						|
 * @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;
 | 
						|
 | 
						|
        /* c8 ignore start */
 | 
						|
        if (this.n < 0) {
 | 
						|
            this.n = 1;
 | 
						|
        }/* c8 ignore stop */
 | 
						|
 | 
						|
        return this.prefix + this.n;
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
module.exports = IdGenerator;
 |