const fs = require('fs'); const html = fs.readFileSync('menu.txt', 'utf8'); const items = []; const regexCategory = /
([\s\S]*?)<\/div>\s*<\/div>/g; const regexTitle = /class="restaurant-menu-category">([^<]+)<\/a>/; const regexPosition = /
([\s\S]*?)<\/div>\s*<\/div>\s*<\/div>/g; // wait, the structure is a bit complex for simple regex. // Let's use basic string splitting. const cats = html.split('
'); cats.shift(); // remove first empty const result = []; cats.forEach(catHtml => { const titleMatch = catHtml.match(/class="restaurant-menu-category">([^<]+)<\/a>/); const categoryName = titleMatch ? titleMatch[1].trim() : ''; const itemsMatches = catHtml.split('
{ const idMatch = itemHtml.match(/data-position="([^"]*)"/); const catIdMatch = itemHtml.match(/data-category-id="([^"]*)"/); const tagMatch = itemHtml.match(/data-tag="([^"]*)"/); const imgMatch = itemHtml.match(/]+src="([^"]+)"/); const titleTextMatch = itemHtml.match(/

([^<]+)/); const descMatch = itemHtml.match(/([^<]*)<\/span>/); const priceMatch = itemHtml.match(/
\s*([^<]+)<\/span>/); categoryItems.push({ position: idMatch ? idMatch[1] : '', categoryId: catIdMatch ? catIdMatch[1] : '', tag: tagMatch ? tagMatch[1] : '', image: imgMatch ? imgMatch[1] : '', title: titleTextMatch ? titleTextMatch[1].trim() : '', description: descMatch ? descMatch[1].trim() : '', price: priceMatch ? priceMatch[1].trim() : '' }); }); result.push({ categoryName, items: categoryItems }); }); fs.writeFileSync('public/menu.json', JSON.stringify(result, null, 2)); console.log('Saved public/menu.json');