| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- 'use strict';
- var nunjucks = require('nunjucks');
- var env = new nunjucks.Environment();
- var pathFn = require('path');
- var fs = require('fs');
- env.addFilter('uriencode', function(str) {
- return encodeURI(str);
- });
- env.addFilter('noControlChars', function(str) {
- return str && str.replace(/[\x00-\x1F\x7F]/g, '');
- });
- var searchTmplSrc = pathFn.join(__dirname, '../templates/search.xml');
- var searchTmpl = nunjucks.compile(fs.readFileSync(searchTmplSrc, 'utf8'), env);
- module.exports = function(locals){
- var config = this.config;
- var searchConfig = config.search;
- var template = searchTmpl;
- var searchfield = searchConfig.field;
- var content = searchConfig.content;
- if (content == undefined) content=true;
- var posts, pages;
- if(searchfield.trim() != ''){
- searchfield = searchfield.trim();
- if(searchfield == 'post'){
- posts = locals.posts.sort('-date');
- }else if(searchfield == 'page'){
- pages = locals.pages;
- }else{
- posts = locals.posts.sort('-date');
- pages = locals.pages;
- }
- }else{
- posts = locals.posts.sort('-date');
- }
- var xml = template.render({
- config: config,
- posts: posts,
- pages: pages,
- content: content,
- url: config.root
- });
- return {
- path: searchConfig.path,
- data: xml
- };
- };
|