diff --git a/scripts/add-metadata-divs.js b/scripts/add-metadata-divs.js new file mode 100644 index 0000000..beda144 --- /dev/null +++ b/scripts/add-metadata-divs.js @@ -0,0 +1,66 @@ +const fs = require('fs'); +const path = require('path'); + +const filePath = path.join(__dirname, '../src/lib/blog-data.ts'); +let content = fs.readFileSync(filePath, 'utf-8'); + +// Function to format date from ISO format +function formatDate(isoDate) { + const date = new Date(isoDate + 'T00:00:00Z'); + const months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; + return `${months[date.getUTCMonth()]} ${date.getUTCDate()}, ${date.getUTCFullYear()}`; +} + +// Replace each post's content to add metadata div +content = content.replace( + /content:\s*`
/g, + (match) => { + // We'll do a more sophisticated replacement with the post data + return match; + } +); + +// Actually, we need a smarter approach - match each post and extract date info +// Let's use a different strategy: find each post object and inject the metadata + +const postRegex = /(\{\s*slug:\s*"([^"]+)"[\s\S]*?publishDate:\s*"([^"]+)"[\s\S]*?dateModified:\s*"([^"]+)"[\s\S]*?authorName:\s*"([^"]+)"[\s\S]*?authorTitle:\s*"([^"]+)"[\s\S]*?content:\s*`
)/g; + +let match; +const replacements = []; + +while ((match = postRegex.exec(content)) !== null) { + const fullMatch = match[0]; + const slug = match[2]; + const publishDate = match[3]; + const dateModified = match[4]; + const authorName = match[5]; + const authorTitle = match[6]; + + const publishFormatted = formatDate(publishDate); + const modifiedFormatted = formatDate(dateModified); + + const metadataDiv = ` + `; + + const replacement = fullMatch.replace( + '
', + `
+ ${metadataDiv}` + ); + + replacements.push({ original: fullMatch, replacement, slug }); +} + +// Apply replacements in reverse order to maintain indices +replacements.reverse().forEach(({ original, replacement }) => { + content = content.replace(original, replacement); +}); + +fs.writeFileSync(filePath, content, 'utf-8'); +console.log(`âś… Added metadata divs to ${replacements.length} posts`); +replacements.forEach(r => console.log(` - ${r.slug}`)); diff --git a/scripts/fix-metadata-dates.js b/scripts/fix-metadata-dates.js new file mode 100644 index 0000000..d71c49f --- /dev/null +++ b/scripts/fix-metadata-dates.js @@ -0,0 +1,46 @@ +const fs = require('fs'); +const path = require('path'); + +const filePath = path.join(__dirname, '../src/lib/blog-data.ts'); +let content = fs.readFileSync(filePath, 'utf-8'); + +// Fix the date formatting issue in metadata divs +// Replace "undefined NaN, NaN" with proper formatted dates from the post data + +const postRegex = /slug:\s*"([^"]+)"[\s\S]*?date:\s*"([^"]+)"[\s\S]*?updatedAt:\s*"([^"]+)"[\s\S]*?