Browse Source

Correctly store language and platform mappings together (#3588)

Previously they were stored separately in their own arrays.
This made them disconnected, and impossible to know if a page
belonged to which platform and language combination.

This PR adds an array of objects called `targets` which contains
platform/language pairs.
Agniva De Sarker 5 years ago
parent
commit
62731a8b64
2 changed files with 16 additions and 3 deletions
  1. 1 0
      .gitignore
  2. 15 3
      scripts/build-index.js

+ 1 - 0
.gitignore

@@ -17,3 +17,4 @@ test_result
 # but it's been superseded by a static asset
 # hosted at https://tldr-pages.github.io/assets/index.json
 pages/index.json
+index.json

+ 15 - 3
scripts/build-index.js

@@ -29,8 +29,19 @@ function buildPagesIndex(files) {
       if (!index[page].language.includes(language)) {
         index[page].language.push(language);
       }
+
+      const targets = index[page].targets;
+      const exists = targets.some((t) => {return t.platform === os && t.language === language});
+      if (!exists) {
+        targets.push({os, language})
+      }
     } else {
-      index[page] = {name: page, platform: [os], language: [language]};
+      index[page] = {
+        name: page,
+        platform: [os],
+        language: [language],
+        targets: [{os, language}]
+      };
     }
 
     return index;
@@ -43,8 +54,9 @@ function buildPagesIndex(files) {
       .map(function(page) {
         return {
           name: page,
-          platform: obj[page]["platform"],
-          language: obj[page]["language"]
+          platform: obj[page].platform,
+          language: obj[page].language,
+          targets: obj[page].targets
         };
       });
 }