UNPKG

patchwork-mapconverter

Version:

Executable wrapper for https://github.com/ChiefOfGxBxL/WC3MapTranslator

57 lines 4.32 kB
"use strict"; 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=