UNPKG

@protorians/core

Version:
76 lines (75 loc) 2.27 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.TokenList = TokenList; const utilities_1 = require("../utilities"); var syncObjectArray = utilities_1.ObjectUtility.syncObjectArray; function TokenList() { let entries = []; return { get length() { return entries.length; }, get value() { return entries.join(' '); }, toString() { return entries.join(' '); }, add(...tokens) { tokens.forEach((token) => { if (!this.contains(token)) { entries[entries.length] = token; } }); syncObjectArray(this, entries); return this; }, contains(token) { return entries.includes(token); }, item(index) { return entries[index] || null; }, remove(...tokens) { entries = entries.filter((token) => !tokens.includes(token)); syncObjectArray(this, entries); return this; }, replace(token, newToken) { let responses = []; entries.forEach((value, index) => { if (value === token) { entries[index] = newToken; responses[responses.length] = true; return; } responses[responses.length] = false; }); syncObjectArray(this, entries); return responses.every((response) => response); }, supports(token) { return this.contains(token); }, toggle(token, force) { if (force !== true) { if (this.contains(token)) { this.remove(token); return false; } else { this.add(token); return true; } } else { this.add(token); return true; } }, forEach(callback, thisArg) { entries.forEach((token, index) => callback.apply(thisArg, [token, index, this])); return this; }, }; }