patchwork-mapconverter
Version:
Executable wrapper for https://github.com/ChiefOfGxBxL/WC3MapTranslator
57 lines • 4.32 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.StringsTranslator = void 0;
const HexBuffer_1 = require("../HexBuffer");
class StringsTranslator {
constructor() { }
static getInstance() {
if (this.instance == null) {
this.instance = new this();
}
return this.instance;
}
static jsonToWar(string) {
return this.getInstance().jsonToWar(string);
}
static warToJson(buffer) {
return this.getInstance().warToJson(buffer);
}
jsonToWar(stringsJson) {
const outBufferToWar = new HexBuffer_1.HexBuffer();
/*
* Strings
*/
Object.keys(stringsJson).forEach((key) => {
outBufferToWar.addChars('STRING ' + key);
outBufferToWar.addNewLine();
outBufferToWar.addChars('{');
outBufferToWar.addNewLine();
outBufferToWar.addStringNoNewline(stringsJson[key]);
outBufferToWar.addNewLine();
outBufferToWar.addChars('}');
outBufferToWar.addNewLine();
outBufferToWar.addNewLine();
});
return {
errors: [],
buffer: outBufferToWar.getBuffer()
};
}
warToJson(buffer) {
const wts = buffer.toString().replace(/\r\n/g, '\n'); // may contain Windows linebreaks (\r\n), but below regex just assumes \n
const matchStringDefinitionBlock = /STRING ([0-9]+)\n?(?:.*\n)?{\n((?:.|\n)*?)\n}/g; // see: https://regexr.com/3r572
const result = {}; // stores the json form of strings file
let match; // stores individual matches as input is read
while ((match = matchStringDefinitionBlock.exec(wts)) !== null) {
const num = match[1];
const body = match[2];
result[num] = body;
}
return {
errors: [],
json: result
};
}
}
exports.StringsTranslator = StringsTranslator;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RyaW5nc1RyYW5zbGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvd2MzbWFwdHJhbnNsYXRvci90cmFuc2xhdG9ycy9TdHJpbmdzVHJhbnNsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw0Q0FBd0M7QUFJeEMsTUFBYSxpQkFBaUI7SUFHNUIsZ0JBQXdCLENBQUM7SUFFbEIsTUFBTSxDQUFDLFdBQVc7UUFDdkIsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksRUFBRTtZQUN6QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUE7U0FDM0I7UUFDRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUE7SUFDdEIsQ0FBQztJQUVNLE1BQU0sQ0FBQyxTQUFTLENBQUUsTUFBOEI7UUFDckQsT0FBTyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQzdDLENBQUM7SUFFTSxNQUFNLENBQUMsU0FBUyxDQUFFLE1BQWM7UUFDckMsT0FBTyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQzdDLENBQUM7SUFFTSxTQUFTLENBQUUsV0FBbUM7UUFDbkQsTUFBTSxjQUFjLEdBQUcsSUFBSSxxQkFBUyxFQUFFLENBQUE7UUFFdEM7O2VBRU87UUFDUCxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ3ZDLGNBQWMsQ0FBQyxRQUFRLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQyxDQUFBO1lBQ3hDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsQ0FBQTtZQUMzQixjQUFjLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQzVCLGNBQWMsQ0FBQyxVQUFVLEVBQUUsQ0FBQTtZQUMzQixjQUFjLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBc0IsQ0FBQyxDQUFBO1lBQ3hFLGNBQWMsQ0FBQyxVQUFVLEVBQUUsQ0FBQTtZQUMzQixjQUFjLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQzVCLGNBQWMsQ0FBQyxVQUFVLEVBQUUsQ0FBQTtZQUMzQixjQUFjLENBQUMsVUFBVSxFQUFFLENBQUE7UUFDN0IsQ0FBQyxDQUFDLENBQUE7UUFFRixPQUFPO1lBQ0wsTUFBTSxFQUFFLEVBQUU7WUFDVixNQUFNLEVBQUUsY0FBYyxDQUFDLFNBQVMsRUFBRTtTQUNuQyxDQUFBO0lBQ0gsQ0FBQztJQUVNLFNBQVMsQ0FBRSxNQUFjO1FBQzlCLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFBLENBQUMseUVBQXlFO1FBQzlILE1BQU0sMEJBQTBCLEdBQUcsZ0RBQWdELENBQUEsQ0FBQyxnQ0FBZ0M7UUFFcEgsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFBLENBQUMsdUNBQXVDO1FBQ3pELElBQUksS0FBNkIsQ0FBQSxDQUFDLDZDQUE2QztRQUUvRSxPQUFPLENBQUMsS0FBSyxHQUFHLDBCQUEwQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRTtZQUM5RCxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDcEIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ3JCLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUE7U0FDbkI7UUFFRCxPQUFPO1lBQ0wsTUFBTSxFQUFFLEVBQUU7WUFDVixJQUFJLEVBQUUsTUFBTTtTQUNiLENBQUE7SUFDSCxDQUFDO0NBQ0Y7QUE5REQsOENBOERDIn0=