fix: 修改文件名大小写
This commit is contained in:
@@ -9,6 +9,7 @@ const scope = [
|
||||
"MergeConfig",
|
||||
"SpecialRingConfig",
|
||||
"RecyclingSettingConfig",
|
||||
"ActivitiesConf",
|
||||
// "NpcTransConf"
|
||||
// "MergeTotal", "RecyclingSettingConfig", "UpstarConfig",
|
||||
].filter(Boolean);
|
||||
|
||||
@@ -1,107 +1,37 @@
|
||||
const { log } = require('console');
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const folderPath = "../luaConfigs"
|
||||
const { log } = require("console");
|
||||
const fs = require("fs");
|
||||
const path = require("path");
|
||||
const { parse } = require("lua-json");
|
||||
const folderPath = "./luaConfigs";
|
||||
|
||||
function parseLuaConfig(luaContent) {
|
||||
const config = {};
|
||||
const lines = luaContent.split('\n');
|
||||
let currentPath = config;
|
||||
|
||||
lines.forEach(line => {
|
||||
line = line.trim();
|
||||
if (line.startsWith('--')) return; // 跳过注释行
|
||||
|
||||
// 匹配键值对
|
||||
const keyMatch = line.match(/^\s*(\w+)\s*=\s*(.+?),?$/);
|
||||
if (keyMatch) {
|
||||
const key = keyMatch[1].trim();
|
||||
const value = keyMatch[2].trim();
|
||||
|
||||
// 尝试解析值
|
||||
let parsedValue;
|
||||
if (value === 'true' || value === 'false') {
|
||||
parsedValue = value === 'true';
|
||||
} else if (!isNaN(parseFloat(value))) {
|
||||
parsedValue = parseFloat(value);
|
||||
} else if (value.startsWith('"') && value.endsWith('"')) {
|
||||
parsedValue = value.slice(1, -1);
|
||||
} else if (value.startsWith('{') && value.endsWith('}')) {
|
||||
parsedValue = parseLuaTable(value);
|
||||
} else {
|
||||
parsedValue = value;
|
||||
}
|
||||
|
||||
// 处理嵌套对象
|
||||
const keys = key.split('.');
|
||||
keys.reduce((acc, k, i) => {
|
||||
if (i === keys.length - 1) {
|
||||
acc[k] = parsedValue;
|
||||
} else {
|
||||
acc[k] = acc[k] || {};
|
||||
return acc[k];
|
||||
}
|
||||
}, currentPath);
|
||||
}
|
||||
|
||||
// 匹配表(数组或对象)
|
||||
const tableMatch = line.match(/^\s*(\w+)\s*=\s*{(.+?)},?$/);
|
||||
if (tableMatch) {
|
||||
const key = tableMatch[1].trim();
|
||||
const tableContent = tableMatch[2].trim();
|
||||
const parsedTable = parseLuaTable(tableContent);
|
||||
|
||||
// 处理嵌套对象
|
||||
const keys = key.split('.');
|
||||
keys.reduce((acc, k, i) => {
|
||||
if (i === keys.length - 1) {
|
||||
acc[k] = parsedTable;
|
||||
} else {
|
||||
acc[k] = acc[k] || {};
|
||||
return acc[k];
|
||||
}
|
||||
}, currentPath);
|
||||
}
|
||||
});
|
||||
|
||||
return config;
|
||||
}
|
||||
|
||||
// 解析Lua表(数组或对象)
|
||||
function parseLuaTable(tableContent) {
|
||||
const table = [];
|
||||
const lines = tableContent.split(',').map(line => line.trim());
|
||||
|
||||
lines.forEach(line => {
|
||||
if (line.startsWith('{')) {
|
||||
const nestedTableContent = line.slice(1, -1).trim();
|
||||
table.push(parseLuaTable(nestedTableContent));
|
||||
} else if (line.startsWith('"') && line.endsWith('"')) {
|
||||
table.push(line.slice(1, -1));
|
||||
} else if (!isNaN(parseFloat(line))) {
|
||||
table.push(parseFloat(line));
|
||||
} else if (line === 'true' || line === 'false') {
|
||||
table.push(line === 'true');
|
||||
} else {
|
||||
table.push(line);
|
||||
}
|
||||
});
|
||||
|
||||
return table;
|
||||
}
|
||||
const scope = ["Monster"]
|
||||
const scope = [
|
||||
// "MergeTotal",
|
||||
"ActivitiesConf",
|
||||
].filter(Boolean);
|
||||
|
||||
const start = () => {
|
||||
const files = fs.readdirSync(folderPath);
|
||||
const files = fs.readdirSync(folderPath);
|
||||
|
||||
// 过滤出所有的 JSON 文件
|
||||
const luaFiles = files.filter(file => path.extname(file) === '.config').filter(file => scope.map(e => `${e}.config`).includes(file));
|
||||
luaFiles.forEach(file => {
|
||||
const luaContent = fs.readFileSync(path.join(folderPath, file), 'utf8')
|
||||
const filename = path.basename(file, path.extname(file));
|
||||
const luaConfig = parseLuaConfig(luaContent);
|
||||
log(luaConfig)
|
||||
fs.writeFileSync(`../configs/${filename}.json`, luaConfig);
|
||||
});
|
||||
}
|
||||
start()
|
||||
// 过滤出所有的 JSON 文件
|
||||
const luaFiles = files.filter((file) => path.extname(file) === ".config").filter((file) => scope.map((e) => `${e}.config`).includes(file));
|
||||
luaFiles.forEach((file) => {
|
||||
const luaContent = fs.readFileSync(path.join(folderPath, file), "utf8");
|
||||
const filename = path.basename(file, path.extname(file));
|
||||
const content = luaContent.replace(filename, "").slice(1);
|
||||
const luaConfig = parse(`return ${content}`);
|
||||
for (const key in luaConfig) {
|
||||
const item = luaConfig[key];
|
||||
const arr = [];
|
||||
Object.entries(item).forEach(([k, v]) => {
|
||||
if (!isNaN(k) && typeof v === "object") {
|
||||
arr.push(v);
|
||||
}
|
||||
});
|
||||
if (arr.length > 0) {
|
||||
luaConfig[key] = arr;
|
||||
}
|
||||
}
|
||||
fs.writeFileSync(`./configs/${filename}.json`, JSON.stringify(luaConfig, "utf-8"));
|
||||
});
|
||||
};
|
||||
start();
|
||||
|
||||
Reference in New Issue
Block a user