1 | var _ = require('underscore'),
|
2 | async = require('async'),
|
3 | cheerio = require('cheerio'),
|
4 | common = require('./common.js');
|
5 |
|
6 | module.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 |
|