UNPKG

led-matrix-ts

Version:

Highly customizable led matrix for the browser

66 lines 2.4 kB
export class CharacterDictionary { constructor() { this._characters = []; } get characters() { return this._characters; } get height() { return Math.max.apply(Math, this._characters.map(x => x.height)); } get length() { return this._characters.length; } find(input) { const character = this._characters.filter(x => x.hasPattern(input)); if (character && character.length > 0) { return character[0]; } throw `Could not find character ${input} in the alphabet`; } add(pendingCharacters) { const pendingPatterns = pendingCharacters.map(x => x.pattern); const duplicatedPendingPatterns = pendingPatterns.filter((value, index, array) => { return array.indexOf(value) != index; }); if (duplicatedPendingPatterns.length > 0) { throw `Pattern already used by another pending character`; } if (this._characters.length > 0) { const alreadyAddedPatterns = this._characters.map(x => x.pattern); const duplicatedPatterns = alreadyAddedPatterns.filter((value) => { return pendingPatterns.indexOf(value) != -1; }); if (duplicatedPatterns.length > 0) { throw `Pattern already used by another character`; } } this._characters.push(...pendingCharacters); } edit(pendingCharacter) { let edited = false; this._characters.forEach((character, index, arr) => { if (character.pattern == pendingCharacter.pattern && !edited) { arr[index] = pendingCharacter; edited = true; } }); if (!edited) { throw `Could not find character ${pendingCharacter.pattern} in the alphabet. Aborted edit operation`; } } delete(pendingCharacter) { let deleted = false; this._characters.forEach((character, index, arr) => { if (character.pattern == pendingCharacter.pattern && !deleted) { arr.splice(index, 1); deleted = true; } }); if (!deleted) { throw `Could not find character ${pendingCharacter.pattern} in the alphabet. Aborted delete operation`; } } } ; //# sourceMappingURL=character-dictionary.js.map