beth-parser
Version:
Parser library for Bethesda's Creation Engine data files
42 lines • 1.52 kB
JavaScript
;
exports.__esModule = true;
var ModfileDefs_1 = require("../ModfileDefs");
var entry_1 = require("../entry");
/**
* Default collecting child handler implementation.
*/
var ModfileHandler = /** @class */ (function () {
function ModfileHandler() {
/**
* Modfile root entry.
*/
this.root = new entry_1.GroupEntry(ModfileDefs_1.GroupType.ROOT, 0);
/**
* Children array stack.
*/
this.stack = [this.root.children];
}
ModfileHandler.prototype.handleGroup = function (type, _size, label, parse) {
// Create group entry
var group = new entry_1.GroupEntry(type, label);
// Register in parent
this.stack[this.stack.length - 1].push(group);
// Parse children
this.stack.push(group.children);
parse(this);
this.stack.pop();
};
ModfileHandler.prototype.handleRecord = function (type, size, flags, formId, parse) {
// Prepare children array
var record = new entry_1.RecordEntry(type, flags, formId);
// Register in parent
this.stack[this.stack.length - 1].push(record);
// Parse fields
parse(function (type, size, buffer, offset) {
record.fields.push(new entry_1.FieldEntry(type, Buffer.from(buffer.subarray(offset, offset + size))));
});
};
return ModfileHandler;
}());
exports["default"] = ModfileHandler;
//# sourceMappingURL=ModfileHandler.js.map