UNPKG

plaxtony

Version:

Static code analysis of SC2 Galaxy Script

59 lines 1.72 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.LocalizationTriggers = exports.LocalizationTextStore = exports.LocalizationFile = void 0; const fs = require("fs"); // const fileRe = /^((\w+)\/(\w+)\/(\w+))=(.+)$/gmu; const fileRe = /^\s*([^=]+)=(.+)$/gmu; class LocalizationFile extends Map { readFromFile(filename) { const text = fs.readFileSync(filename, 'utf8'); return this.read(text); } read(content) { // remove UTF8 BOM content = content.replace(/^\uFEFF/, ''); let result; while (result = fileRe.exec(content)) { if (result[1].startsWith('//')) continue; this.set(result[1], result[2]); } return true; } } exports.LocalizationFile = LocalizationFile; class LocalizationTextStore { constructor() { this.entries = new LocalizationFile(); } merge(files) { if (files instanceof LocalizationFile) { files = [files]; } for (const sf of files) { for (const [key, item] of sf) { this.entries.set(key, item); } } } text(key) { return this.entries.get(key); } } exports.LocalizationTextStore = LocalizationTextStore; class LocalizationTriggers extends LocalizationTextStore { elementName(key, el, fallbackToKey = false) { if (el) { key = el.textKey(key); } const r = this.entries.get(key); if (r) { return r; } if (fallbackToKey) { return key; } } } exports.LocalizationTriggers = LocalizationTriggers; //# sourceMappingURL=localization.js.map