beth-parser
Version:
Parser library for Bethesda's Creation Engine data files
57 lines • 2.35 kB
JavaScript
;
exports.__esModule = true;
var fs_1 = require("fs");
var StringsParser_1 = require("./StringsParser");
var path_1 = require("path");
/**
* Node.js based strings file reader (high-level API for parser).
*/
var StringsReader = /** @class */ (function () {
function StringsReader() {
this.strings = {};
}
/**
* Read strings from the given data buffer.
* @param buffer Buffer with strings data.
* @param padded Whether strings are stored with size padding.
* @param encoding String encoding.
*/
StringsReader.prototype.readBuffer = function (buffer, padded, encoding) {
var _this = this;
if (padded === void 0) { padded = false; }
if (encoding === void 0) { encoding = "utf-8"; }
var stringsParser = new StringsParser_1["default"](buffer, padded, encoding);
stringsParser.parse(function (id, text) { return _this.strings[id] = text; });
return this.strings;
};
/**
* Read strings from the specified file.
* @param filename File system path to a strings file.
* @param encoding String encoding.
*/
StringsReader.prototype.readFile = function (filename, encoding) {
if (encoding === void 0) { encoding = "utf-8"; }
var buffer = fs_1.readFileSync(filename);
var padded = path_1.extname(filename).toUpperCase() !== ".STRINGS";
return this.readBuffer(buffer, padded, encoding);
};
/**
* Read strings for the specified modfile.
* @param filename File system path to a modfile.
* @param language Strings file language code.
* @param encoding String encoding.
*/
StringsReader.prototype.readByModfile = function (filename, language, encoding) {
var _this = this;
if (encoding === void 0) { encoding = "utf-8"; }
var name = path_1.basename(filename).replace(/\.[^\.]+$/, "") + "_" + language;
var path = path_1.join(path_1.dirname(filename), "Strings");
[".STRINGS", ".DLSTRINGS", ".ILSTRINGS"].forEach(function (extension) {
_this.readFile(path_1.join(path, name + extension), encoding);
});
return this.strings;
};
return StringsReader;
}());
exports["default"] = StringsReader;
//# sourceMappingURL=StringsReader.js.map