| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- 'use strict';
- var minimatch = require('minimatch');
- var template = require('./template');
- module.exports = function(locals) {
- var config = this.config;
- var skipRenderList = [
- '**/*.js',
- '**/*.css'
- ];
- if (Array.isArray(config.skip_render)) {
- skipRenderList = skipRenderList.concat(config.skip_render);
- } else if (config.skip_render != null) {
- skipRenderList.push(config.skip_render);
- }
- var posts = [].concat(locals.posts.toArray(), locals.pages.toArray())
- .filter(function(post) {
- return post.sitemap !== false && !isMatch(post.source, skipRenderList);
- })
- .sort(function(a, b) {
- return b.updated - a.updated;
- });
- var xml = template(config).render({
- config: config,
- posts: posts
- });
- return {
- path: config.sitemap.path,
- data: xml
- };
- };
- function isMatch(path, patterns) {
- if (!patterns) return false;
- if (!Array.isArray(patterns)) patterns = [patterns];
- if (!patterns.length) return false;
- for (var i = 0, len = patterns.length; i < len; i++) {
- if (minimatch(path, patterns[i])) return true;
- }
- return false;
- }
|