'use strict' const micromatch = require('micromatch') const template = require('./template') const isMatch = (path, patterns) => { if (patterns && patterns.length) { if (micromatch.isMatch(path, patterns, { matchBase: true })) return true } return false } module.exports = function (locals) { const { config } = this const { sitemap, skip_render } = config const { path } = sitemap const skipRenderList = ['*.js', '*.css'] if (Array.isArray(skip_render)) { skipRenderList.push(...skip_render) } else if (skip_render != null) { skipRenderList.push(skip_render) } const posts = [].concat(locals.posts.toArray(), locals.pages.toArray()) .filter((post) => { return post.sitemap !== false && !isMatch(post.source, skipRenderList) }) .sort((a, b) => { return b.date - a.date }) // configuration dictionary const xmlConfig = { config, posts, tags: locals.tags.toArray() } const data = template(config).render(xmlConfig) return { path, data } }