tablas y delete module

This commit is contained in:
Jordan Diaz
2026-04-12 10:16:52 +00:00
parent 224ac2dad7
commit ca39cd2ccd
7 changed files with 191 additions and 223 deletions

View File

@@ -0,0 +1,65 @@
const BOOL_FIELDS = new Set([
'isSystemField', 'isRequired', 'isAdmin', 'adminOnly', 'hidden',
'_detailPage', '_disableAdd', '_disableDelete'
]);
const INT_FIELDS = new Set(['order', 'menuOrder', 'maxRecords', 'maxUploads']);
function stripPhpLine(ini) {
return ini.replace(/^<\?php.*?\?>\s*\n?/, '');
}
function coerceValue(key, value) {
if (BOOL_FIELDS.has(key)) return value === '1';
if (INT_FIELDS.has(key)) { const n = parseInt(value, 10); return isNaN(n) ? 0 : n; }
return value;
}
export function parseIniMeta(iniContent) {
const clean = stripPhpLine(iniContent);
const meta = {};
for (const line of clean.split('\n')) {
const trimmed = line.trim();
if (!trimmed || trimmed.startsWith(';') || trimmed.startsWith('#')) continue;
if (trimmed.startsWith('[')) break;
const m = trimmed.match(/^([^\s=]+)\s*=\s*(.*)$/);
if (m) {
const key = m[1];
const value = m[2].trim().replace(/^"|"$/g, '');
meta[key] = coerceValue(key, value);
}
}
return meta;
}
export function parseIniSchema(iniContent) {
const clean = stripPhpLine(iniContent);
const result = {};
const fields = {};
let currentSection = null;
for (const line of clean.split('\n')) {
const trimmed = line.trim();
if (!trimmed || trimmed.startsWith(';') || trimmed.startsWith('#')) continue;
const sectionMatch = trimmed.match(/^\[(.+)\]$/);
if (sectionMatch) {
currentSection = sectionMatch[1];
fields[currentSection] = {};
continue;
}
const kvMatch = trimmed.match(/^([^\s=]+)\s*=\s*(.*)$/);
if (kvMatch) {
const key = kvMatch[1];
const value = kvMatch[2].trim().replace(/^"|"$/g, '');
if (currentSection) {
fields[currentSection][key] = coerceValue(key, value);
} else {
result[key] = coerceValue(key, value);
}
}
}
result.fields = fields;
return result;
}