UNPKG

2.27 kBJavaScriptView Raw
1var _ = require('underscore'),
2 async = require('async'),
3 cheerio = require('cheerio'),
4 common = require('./common.js');
5
6module.exports = function(config) {
7 return function(files, metalsmith, done) {
8 async.forEachOf(common.htmlfiles(files), function(file, filename, finished) {
9 var $ = cheerio.load(file.contents);
10 var new_readmore;
11
12 var readmore = $('.readmore');
13 if (readmore.length > 0) {
14 readmore = readmore.first();
15 readmore_content = readmore.text();
16 var new_classes;
17 if (readmore.hasClass('remove')) {
18 new_classes = "new_readmore remove";
19 } else {
20 new_classes = "new_readmore";
21 }
22 new_readmore = readmore.after('<a class="' + new_classes + ' thispath" href="">' + readmore_content + '</a>');
23 $(readmore).remove();
24 }
25
26 var snippet = $('.snippet');
27 var paragraphs = $("p");
28 var new_snippet;
29 var new_excerpt;
30 if (snippet.length > 0) {
31 new_snippet = snippet.first();
32 var tmp_excerpt = cheerio.load(new_snippet.html());
33 tmp_excerpt('span').remove();
34 tmp_excerpt('.new_readmore.remove').remove();
35 var new_excerpt = cheerio.load("");
36 tmp_excerpt('p').each(function (i, elem) {
37 new_excerpt.root().append(tmp_excerpt(elem));
38 });
39 new_excerpt = new_excerpt.html().replace(" ,", ",").replace(" .", ".");
40 } else if (paragraphs.length > 0) {
41 new_excerpt = new_snippet = paragraphs.first();
42 file.snippet_classes = new_excerpt.parent('div').attr('class');
43 }
44
45 if (new_snippet) {
46 file.snippet = new_snippet.html();
47 file.excerpt = new_excerpt;
48 file.has_more = (paragraphs.length > 1);
49 }
50 if (new_readmore) {
51 file.has_more = false;
52 $('.new_readmore.remove').remove();
53 var readmore = $('.new_readmore');
54 if (readmore.length > 0) {
55 readmore = readmore.first();
56 readmore_content = readmore.text();
57 new_readmore = readmore.after(readmore_content);
58 $(readmore).remove();
59 }
60 file.contents = new Buffer($.html());
61 }
62 finished();
63 }, function () {
64 done();
65 });
66 }
67};
68