beth-parser
Version:
Parser library for Bethesda's Creation Engine data files
51 lines • 1.76 kB
JavaScript
;
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