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;