post.js 640 B

123456789101112131415161718192021222324252627282930313233
  1. 'use strict';
  2. function postGenerator(locals) {
  3. const posts = locals.posts.sort('-date').toArray();
  4. const { length } = posts;
  5. return posts.map((post, i) => {
  6. const { path, layout } = post;
  7. if (!layout || layout === 'false') {
  8. return {
  9. path,
  10. data: post.content
  11. };
  12. }
  13. if (i) post.prev = posts[i - 1];
  14. if (i < length - 1) post.next = posts[i + 1];
  15. const layouts = ['post', 'page', 'index'];
  16. if (layout !== 'post') layouts.unshift(layout);
  17. post.__post = true;
  18. return {
  19. path,
  20. layout: layouts,
  21. data: post
  22. };
  23. });
  24. }
  25. module.exports = postGenerator;