import { escapeHtml } from './html.js'
import { siteName, siteUrl } from './site.config.js'
export const toSitemapDate = (iso) => (iso ? iso.slice(0, 10) : '')
const toRssDate = (iso) => {
if (!iso) return ''
const date = new Date(iso)
return Number.isNaN(date.valueOf()) ? '' : date.toUTCString()
}
export const renderFeed = (items) => {
const lastBuild = toRssDate(items.find((item) => item.date)?.date) || new Date().toUTCString()
const itemXml = items
.map((item) => {
const loc = `${siteUrl}/${item.dir}/${item.name}/`
const description = item.description
const pubDate = toRssDate(item.date)
return `-
${escapeHtml(item.title)}
${escapeHtml(loc)}
${escapeHtml(loc)}
${pubDate ? `${escapeHtml(pubDate)}` : ''}
${escapeHtml(item.dir)}
${description ? `${escapeHtml(description)}` : ''}
`
})
.join('\n ')
return `
${escapeHtml(siteName)}
${escapeHtml(`${siteUrl}/`)}
${escapeHtml(`Notes and posts from ${siteName}`)}
en-US
${escapeHtml(lastBuild)}
${itemXml}
`
}
export const renderSitemap = (urls) => `
${urls
.map(({ loc, lastmod }) => {
const modified = lastmod ? `\n ${escapeHtml(lastmod)}` : ''
return `
${escapeHtml(loc)}${modified}
`
})
.join('\n')}
`