plaxtony
Version:
Static code analysis of SC2 Galaxy Script
59 lines • 1.72 kB
JavaScript
;
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