/ website / variable-inject.js
variable-inject.js
 1  import {visit} from 'unist-util-visit'
 2  
 3  const plugin = (options) => {
 4      const transformer = async (ast) => {
 5          visit(ast, ['text', 'code', 'inlineCode', 'link'], (node) => {
 6              // Replace all occurrences of VAR::varName with the value of varName
 7              let value;
 8              switch (node.type) {
 9                  case "link":
10                      value = node.url;
11                      break;
12  
13                  case "text":
14                  case "code":
15                  case "inlineCode":
16                      value = node.value;
17                      break;
18              }
19              value = value.replace(/VAR::([A-Z_]+)/ig, (match, varName) => {
20                  return options.replacements[varName] || match;
21              });
22  
23              switch (node.type) {
24                  case "link":
25                      node.url = value;
26                      break;
27  
28                  case "text":
29                  case "code":
30                  case "inlineCode":
31                      node.value = value;
32                      break;
33              }
34          });
35      };
36      return transformer;
37  };
38  
39  module.exports = plugin;