UNPKG

monaco-editor

Version:
56 lines (55 loc) 2.13 kB
/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import { toUint8 } from './uint.js'; /** * A fast character classifier that uses a compact array for ASCII values. */ var CharacterClassifier = /** @class */ (function () { function CharacterClassifier(_defaultValue) { var defaultValue = toUint8(_defaultValue); this._defaultValue = defaultValue; this._asciiMap = CharacterClassifier._createAsciiMap(defaultValue); this._map = new Map(); } CharacterClassifier._createAsciiMap = function (defaultValue) { var asciiMap = new Uint8Array(256); for (var i = 0; i < 256; i++) { asciiMap[i] = defaultValue; } return asciiMap; }; CharacterClassifier.prototype.set = function (charCode, _value) { var value = toUint8(_value); if (charCode >= 0 && charCode < 256) { this._asciiMap[charCode] = value; } else { this._map.set(charCode, value); } }; CharacterClassifier.prototype.get = function (charCode) { if (charCode >= 0 && charCode < 256) { return this._asciiMap[charCode]; } else { return (this._map.get(charCode) || this._defaultValue); } }; return CharacterClassifier; }()); export { CharacterClassifier }; var CharacterSet = /** @class */ (function () { function CharacterSet() { this._actual = new CharacterClassifier(0 /* False */); } CharacterSet.prototype.add = function (charCode) { this._actual.set(charCode, 1 /* True */); }; CharacterSet.prototype.has = function (charCode) { return (this._actual.get(charCode) === 1 /* True */); }; return CharacterSet; }()); export { CharacterSet };