This repository has no description
Something went wrong. Try again.
12345678910111213141516171819202122232425262728293031323334353637383940function esc(s: string) { return s.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"')}
export type RssItem = { title: string url: string description?: string publishDate: Date}
export function buildRss(opts: { title: string description: string siteUrl: string items: RssItem[]}) { const items = opts.items .map( (i) => ` <item> <title>${esc(i.title)}</title> <link>${esc(opts.siteUrl + i.url)}</link> <guid>${esc(opts.siteUrl + i.url)}</guid> <pubDate>${i.publishDate.toUTCString()}</pubDate> ${i.description ? `<description>${esc(i.description)}</description>` : ''} </item>`, ) .join('') return `<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> <channel> <title>${esc(opts.title)}</title> <link>${esc(opts.siteUrl)}</link> <description>${esc(opts.description)}</description> <atom:link href="${esc(opts.siteUrl)}/rss.xml" rel="self" type="application/rss+xml" />${items} </channel></rss>`}