40 lines
1.7 KiB
JavaScript

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
/* tslint:disable max-classes-per-file */
var utils_1 = require("./utils");
var all_encodings_compressed_json_1 = __importDefault(require("./all-encodings.compressed.json"));
var decompressedEncodings = utils_1.decompressJson(all_encodings_compressed_json_1.default);
var allUnicodeMappings = JSON.parse(decompressedEncodings);
var Encoding = /** @class */ (function () {
function Encoding(name, unicodeMappings) {
var _this = this;
this.canEncodeUnicodeCodePoint = function (codePoint) {
return codePoint in _this.unicodeMappings;
};
this.encodeUnicodeCodePoint = function (codePoint) {
var mapped = _this.unicodeMappings[codePoint];
if (!mapped) {
var str = String.fromCharCode(codePoint);
var hexCode = "0x" + utils_1.padStart(codePoint.toString(16), 4, '0');
var msg = _this.name + " cannot encode \"" + str + "\" (" + hexCode + ")";
throw new Error(msg);
}
return { code: mapped[0], name: mapped[1] };
};
this.name = name;
this.supportedCodePoints = Object.keys(unicodeMappings)
.map(Number)
.sort(function (a, b) { return a - b; });
this.unicodeMappings = unicodeMappings;
}
return Encoding;
}());
exports.Encodings = {
Symbol: new Encoding('Symbol', allUnicodeMappings.symbol),
ZapfDingbats: new Encoding('ZapfDingbats', allUnicodeMappings.zapfdingbats),
WinAnsi: new Encoding('WinAnsi', allUnicodeMappings.win1252),
};