hexo-generator-podcasts
Version:
Hexo Generator for Podcast
47 lines (46 loc) • 2.03 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Template = void 0;
var nunjucks_1 = __importDefault(require("nunjucks"));
var path_1 = __importDefault(require("path"));
var fs_1 = __importDefault(require("fs"));
var xmlescape = require('xml-escape');
var strip_tags = require('locutus/php/strings/strip_tags');
var Explicit;
(function (Explicit) {
Explicit[Explicit["clean"] = 0] = "clean";
Explicit[Explicit["yes"] = 1] = "yes";
Explicit[Explicit["no"] = 2] = "no";
})(Explicit || (Explicit = {}));
var Template;
(function (Template) {
function generateFeed(context) {
var env = new nunjucks_1.default.Environment();
env.addFilter('date_to_rfc822', function (str) { return (new Date(str)).toUTCString(); });
env.addFilter('noControlChars', function (str) { return str.replace(/[\x00-\x09\x0B-\x1F\x7F]/g, ''); });
env.addFilter('uriencode', function (str) { return encodeURI(str); });
env.addFilter('xml_escape', function (str) {
if (!str || str === "")
return "";
return xmlescape(str);
});
env.addFilter('strip_html', function (str) {
if (!str || str === "")
return "";
return strip_tags(str);
});
env.addFilter('get_url', function (str) {
if (str.indexOf("http") == -1)
return context.homepage + "/" + str;
return str;
});
var templatePath = path_1.default.join(__dirname, "../template/feed.xml");
var compileTemplate = nunjucks_1.default.compile(fs_1.default.readFileSync(templatePath, "utf-8"), env);
context.lastBuildDate = (new Date()).toUTCString();
return compileTemplate.render(context);
}
Template.generateFeed = generateFeed;
})(Template = exports.Template || (exports.Template = {}));