wukong-feed
Version:
A wukong plugin for generating feed.
53 lines (46 loc) • 1.22 kB
JavaScript
;
var RSS = require('rss');
var join = require('path').join;
/**
* Expose `feed`.
*/
module.exports = feed;
/**
* Wukong plugin to hide drafts.
*
* @return {GeneratorFunction}
*/
function feed(opts) {
if (!opts || typeof opts === 'string') opts = { type: 'atom' };
var type = opts.type;
var limit = opts.limit || 20;
var fpath = opts.path || '';
var feedUrl = opts.url;
var path = opts.path || 'feed.xml';
return function *feed(next) {
var files = this.files;
var dest = this.wukong.destination();
var metadata = this.wukong.metadata();
var siteUrl = metadata.site_url = metadata.url || metadata.site_url || '';
metadata.feed_url = feedUrl || (siteUrl + '/' + path);
var f = new RSS(metadata);
var post, link;
for (var k in files) {
post = files[k];
link = join(siteUrl, post.path);
f.item({
title: post.title,
description: post.contents.toString(),
url: link,
link: post.link || link,
author: post.author,
pubDate: post.date
});
}
var file = this.wukong.createFile();
file.path = path;
file.contents = f.xml();
yield file.write();
yield next;
};
}