X-Git-Url: https://git.r.bdr.sh/rbdr/blog/blobdiff_plain/db7b464d701c7d48777ddd38a10f69093cd5442c..f6a545b00a4046879b7cc25c06c37bb6b6880b43:/lib/generators/rss.js?ds=sidebyside diff --git a/lib/generators/rss.js b/lib/generators/rss.js index a1fcb08..c47ba03 100644 --- a/lib/generators/rss.js +++ b/lib/generators/rss.js @@ -1,15 +1,22 @@ -'use strict'; - -const { template } = require('dot'); -const { encodeXML } = require('entities'); -const { readFile, writeFile } = require('fs/promises'); -const { join } = require('path'); -const { debuglog } = require('util'); +import Dot from 'dot'; +import { encodeXML } from 'entities'; +import { readFile, writeFile } from 'fs/promises'; +import { join } from 'path'; +import { debuglog } from 'util'; const internals = { debuglog: debuglog('blog'), - kFeedName: 'feed.xml' + kFeedName: 'feed.xml', + + extractTitle(postText) { + + return postText.trim() + .split('\n')[0] + .replace('#', '') + .replace(/&/g, '&') + .trim(); + } }; /** @@ -20,7 +27,7 @@ const internals = { * @param {string} target the target directory * @param {Array.} posts the list of posts */ -module.exports = async function RSSGenerator(source, target, posts) { +export default async function RSSGenerator(source, target, posts) { internals.debuglog('Generating RSS'); const feedTarget = join(target, internals.kFeedName); @@ -33,10 +40,12 @@ module.exports = async function RSSGenerator(source, target, posts) { posts = posts.map((post) => ({ ...post, createdOn: (new Date(post.createdOn)).toUTCString(), + title: internals.extractTitle(post.raw), html: encodeXML(post.html) })); - const feedXml = template(feedTemplate)({ posts }); + const feedXml = Dot.template(feedTemplate, { + ...Dot.templateSettings, + strip: false + })({ posts }); await writeFile(feedTarget, feedXml); -}; - - +}