| const plugin = () => { |
| const config = require('../../docusaurus.config.js'); |
| const fields = config.customFields || {}; |
| |
| const replacements = { |
| '@@VERSION@@': fields.version || '', |
| '@@FLINK_VERSION@@': fields.flinkVersion || '', |
| '@@BRANCH@@': fields.branch || '', |
| '@@GITHUB_REPO@@': fields.githubRepo || '', |
| '@@TRINO_GITHUB_REPO@@': fields.trinoGithubRepo || '', |
| '@@PRESTO_GITHUB_REPO@@': fields.prestoGithubRepo || '', |
| '@@SCALA_VERSION@@': fields.scalaVersion || '', |
| }; |
| |
| const replaceTokens = (str) => { |
| let result = str; |
| for (const [token, value] of Object.entries(replacements)) { |
| result = result.split(token).join(value); |
| } |
| return result; |
| }; |
| |
| const visitNode = (node) => { |
| if (node.type === 'text' && node.value) { |
| node.value = replaceTokens(node.value); |
| } |
| if (node.type === 'code' && node.value) { |
| node.value = replaceTokens(node.value); |
| } |
| if (node.type === 'inlineCode' && node.value) { |
| node.value = replaceTokens(node.value); |
| } |
| if (node.type === 'link' && node.url) { |
| node.url = replaceTokens(node.url); |
| } |
| if (node.type === 'html' && node.value) { |
| node.value = replaceTokens(node.value); |
| } |
| if (node.children) { |
| node.children.forEach(visitNode); |
| } |
| }; |
| |
| return (tree) => { |
| visitNode(tree); |
| }; |
| }; |
| |
| module.exports = plugin; |