-'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();
+ }
};
/**
* @param {string} target the target directory
* @param {Array.<Blog.tPost>} 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);
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);
-};
-
-
+}