Я сейчас пытаюсь прочитать файл, передать содержимое и несколько массивов в функцию; посмотрите, совпадает ли что-либо с использованием регулярных выражений, а затем замените и, наконец, обновите.
Код, который я собрал, выглядит уродливо и комично:
find_and_replace: function(file, ...items) {
let str = _.clone(file);
let valid = {};
let do_escape = true;
let hit;
if (items != null ? items.length : void 0) {
for (let i = 0, len = items.length; i < len; i++) {
let obj = items[i];
try {
for (k in obj) {
let v = obj[k];
if (valid[k] == null) {
valid[k] = v;
}
}
} catch (error) { }
}
try {
str = str.replace('/{{([\s\S]+?)}}/g', function(a, b) {
if (hit = valid[b]) {
if (do_escape) {
return escape(hit);
} else {
return hit;
}
}
return '';
});
} catch (error) {
console.log(error);
}
}
return str;
},
Функция используется следующим образом:
for (let _i = 0, _len = files.length; _i < _len; _i++) {
let x = files[_i];
if(x.includes('node_modules')) {
continue;
}
builder.find_and_replace(builder.read_file(x), main_config, second_config);
break;
}
Функциональность этой "системы" состоит в том, чтобы находить любые {{tag}}
заполнители из файла и заменять на правильный ключ из ...items
объединенного массива
Я был бы очень признателен, если бы кто-нибудь указал мне правильное направление, чтобы уменьшить количество требуемого кода.