+++ /dev/null
-'use strict';
-
-const { template, templateSettings } = require('dot');
-const { encodeXML } = require('entities');
-const { readFile, writeFile } = require('fs/promises');
-const { join } = require('path');
-const { debuglog } = require('util');
-
-const internals = {
- debuglog: debuglog('blog'),
-
- kFeedName: 'feed.xml',
-
- extractTitle(postText) {
-
- return postText.trim().split('\n')[0].replace('#', '').trim();
- }
-};
-
-/**
- * Generates an RSS feed XML file
- *
- * @name RSSGenerator
- * @param {string} source the source directory
- * @param {string} target the target directory
- * @param {Array.<Blog.tPost>} posts the list of posts
- */
-module.exports = async function RSSGenerator(source, target, posts) {
-
- internals.debuglog('Generating RSS');
- const feedTarget = join(target, internals.kFeedName);
- const feedLocation = join(source, internals.kFeedName);
-
- internals.debuglog(`Reading ${feedLocation}`);
- const feedTemplate = await readFile(feedLocation, { encoding: 'utf8' });
-
- internals.debuglog('Writing RSS');
- posts = posts.map((post) => ({
- ...post,
- createdOn: (new Date(post.createdOn)).toUTCString(),
- title: internals.extractTitle(post.raw),
- html: encodeXML(post.html)
- }));
- const feedXml = template(feedTemplate, {
- ...templateSettings,
- strip: false
- })({ posts });
- await writeFile(feedTarget, feedXml);
-};