UNPKG

beth-parser

Version:

Parser library for Bethesda's Creation Engine data files

51 lines 1.76 kB
"use strict"; exports.__esModule = true; var iconv_lite_1 = require("iconv-lite"); /** * Strings data parser. */ var StringsParser = /** @class */ (function () { /** * @param buffer Strings data buffer. * @param padded Whether string data uses size padding. * @param encoding String encoding. */ function StringsParser(buffer, padded, encoding) { if (padded === void 0) { padded = false; } if (encoding === void 0) { encoding = "utf-8"; } this.buffer = buffer; this.padded = padded; this.encoding = encoding; } /** * Parse strings data using the given handler. * @param handler Strings handler. */ StringsParser.prototype.parse = function (handler) { var count = this.buffer.readUInt32LE(0); var start = (count + 1) * 8; // Data starts after dictionary for (var i = 8; i < start; i += 8) { handler(this.buffer.readUInt32LE(i), this.parseString(start + this.buffer.readUInt32LE(i + 4))); } }; /** * Parse string at the given offset. * @param offset Offset inside data buffer. */ StringsParser.prototype.parseString = function (offset) { var start = this.padded ? offset + 4 : offset; var end = start; if (this.padded) { end += this.buffer.readUInt32LE(offset) - 1; } else { while (this.buffer[end] !== 0 || end >= this.buffer.length) { end++; } } return iconv_lite_1.decode(this.buffer.slice(start, end), this.encoding); }; return StringsParser; }()); exports["default"] = StringsParser; //# sourceMappingURL=StringsParser.js.map