aboutsummaryrefslogtreecommitdiff
path: root/generate-tags.js
blob: 1b4b8f81b775b7c29d610ab0b14802da15b1605d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
const mkdirp = require("mkdirp");
const path = require("path");

const saveIndex = require("./save-index.js");

function generateTags(articles) {
  const articlesByTag = {  };
  articles.forEach(article => {
    article.tags.forEach(tag => {
      if (!articlesByTag[tag]) {
        articlesByTag[tag] = [article];
      } else {
        articlesByTag[tag].push(article);
      }
    });
  });

  const promises = Object.keys(articlesByTag).map(
    tag =>
      new Promise((resolve, reject) => {
        const articles = articlesByTag[tag];
        articles.sort((a, b) => {
          return (b.rawDate || 0) - (a.rawDate || 0);
        });

        const tagPath = path.join("output", "tags", tag);
        mkdirp(tagPath, err => {
          if (err) { return reject(err); }

          resolve(
            saveIndex(
              articles.filter(article => !article.hidden),
              path.join(tagPath, "index.html"),
              tag + " | jordan scales",
              "-- " + tag + " posts --"
            )
          );
        });
      })
  );

  return Promise.all(promises);
}

module.exports = generateTags;