---
import Base from '../../layouts/Base.astro';
import fs from 'node:fs';
import path from 'node:path';
export function getStaticPaths() {
const dataDir = path.join(process.cwd(), 'src/data/comics');
if (!fs.existsSync(dataDir)) return [];
const files = fs.readdirSync(dataDir).filter(f => f.endsWith('.html') && !f.includes('?'));
return files.map(file => {
const slug = file.replace('.html', '');
return { params: { slug }, props: { filePath: path.join(dataDir, file) } };
});
}
const { filePath } = Astro.props;
const { slug } = Astro.params;
const html = fs.readFileSync(filePath, 'utf-8');
// Extract title
const titleMatch = html.match(/
([^<]+)<\/title>/i);
const title = titleMatch ? titleMatch[1].replace(/'/g, "'").replace(/&/g, '&') : `Comic #${slug}`;
// Extract comic image URL
const imgMatch = html.match(/src="(http:\/\/assets\.componentowl\.com\/comics\/[^"?]+)/);
const comicImg = imgMatch ? imgMatch[1] : '';
// Extract comic name from title (after "Comics: ")
const nameMatch = title.match(/Comics:\s*(.+)/);
const comicName = nameMatch ? nameMatch[1] : `Comic #${slug}`;
// Extract navigation links
const prevMatch = html.match(/class="comics-prev"[^>]*>/);
const prevHref = html.match(/href="(\d+)\.html"[^>]*class="comics-prev"/);
const nextHref = html.match(/href="(\d+)\.html"[^>]*class="comics-next"/);
// Also try reverse order
const prevHref2 = html.match(/class="comics-prev"[^>]*href="(\d+)/);
const nextHref2 = html.match(/class="comics-next"[^>]*href="(\d+)/);
// And link before class
const prevLink = html.match(/]*>\s*([^<]+)/);
const comicDate = dateMatch ? dateMatch[1].trim() : '';
// Extract description/bubble text
const bubbleMatch = html.match(/comics-bubble[^>]*>.*?([^<]+)/s);
const bubble = bubbleMatch ? bubbleMatch[1].trim() : '';
const num = parseInt(slug);
---
#{num}: {comicName}
{comicDate &&
{comicDate}
}
{comicImg &&
}
{bubble &&
{bubble}
}