-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.js
118 lines (100 loc) · 4.25 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
document.addEventListener('DOMContentLoaded', function() {
async function loadLuaScript(url) {
try {
const response = await fetch(url);
if (!response.ok) {
throw new Error(`HTTP error! Status: ${response.status}`);
}
return await response.text();
} catch (error) {
console.error('Error loading Lua script:', error);
return null;
}
}
function cleanValue(value) {
console.log('Original value:', value);
value = value.trim();
if (value.startsWith('"') && value.endsWith('",')) {
// Es un string, eliminar comillas externas y reemplazar comillas escapadas
value = value.slice(1, -2).replace(/\\"/g, '"');
} else if (value.startsWith('{') && value.endsWith('},')) {
// Es una tabla, eliminar llaves externas y comillas internas
value = value.slice(1, -2).replace(/\"/g, '');
} else {
// Es otro tipo de valor, tomar el valor después del último espacio antes de la coma
value = value.slice(0, -1).trim(); // Eliminar la coma final
const lastSpaceIndex = value.lastIndexOf(' ');
if (lastSpaceIndex !== -1) {
value = value.slice(lastSpaceIndex + 1);
}
// Eliminar comillas si es que hay
if (value.startsWith('"') && value.endsWith('"')) {
value = value.slice(1, -1);
}
}
console.log('Cleaned value:', value);
return value;
}
async function extractLuaFunctions(url) {
try {
const luaScript = await loadLuaScript(url);
if (!luaScript) return null;
const lines = luaScript.split('\n');
const extractedData = {};
let insideLostScript = false;
for (let i = 0; i < lines.length; i++) {
const line = lines[i].trim();
if (line.startsWith('function') && line.includes(':LostScript')) {
insideLostScript = true;
continue;
}
if (insideLostScript) {
if (line.startsWith('end')) {
insideLostScript = false;
break;
}
if (line.startsWith('"') && line.endsWith('",')) {
// Primer valor especial (nombre del script)
extractedData.ScriptName = cleanValue(line);
} else {
const keyValue = line.split('=');
if (keyValue.length === 2) {
const key = keyValue[0].trim();
const value = cleanValue(keyValue[1].trim());
extractedData[key] = value;
}
}
}
}
console.log('Extracted Data:', extractedData);
return extractedData;
} catch (error) {
console.error('Error extracting Lua functions:', error);
return null;
}
}
async function displayExtractedFunctions(luaScriptUrl, field) {
const extractedData = await extractLuaFunctions(luaScriptUrl);
if (extractedData) {
console.log('Extracted Lua functions:', extractedData);
const fieldValue = extractedData[field];
if (fieldValue) {
return fieldValue;
} else {
return `Field "${field}" not found.`;
}
} else {
return 'Failed to extract Lua functions.';
}
}
async function updatePageContent() {
const luaScriptUrl = 'ls_shapes_window.lua';
const name = await displayExtractedFunctions(luaScriptUrl, "Name");
const version = await displayExtractedFunctions(luaScriptUrl, "Version");
const description = await displayExtractedFunctions(luaScriptUrl, "Description");
document.getElementById('name-placeholder').textContent = name;
document.getElementById('version-placeholder').textContent = version;
document.getElementById('description-placeholder').textContent = description;
}
updatePageContent();
});