From 19f487028023d21272c23e41e268502dcec72aeb Mon Sep 17 00:00:00 2001 From: zadam Date: Thu, 5 Jan 2023 16:52:39 +0100 Subject: [PATCH] transform api docs script WIP --- src/transform_api_docs.js | 66 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 src/transform_api_docs.js diff --git a/src/transform_api_docs.js b/src/transform_api_docs.js new file mode 100644 index 000000000..db787dc4a --- /dev/null +++ b/src/transform_api_docs.js @@ -0,0 +1,66 @@ +const sanitizeHtml = require('sanitize-html'); + +function transform(content) { + return sanitizeHtml(content, { + allowedTags: [ + 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'blockquote', 'p', 'a', 'ul', 'ol', + 'li', 'b', 'i', 'strong', 'em', 'strike', 's', 'del', 'abbr', 'code', 'hr', 'br', 'div', + 'table', 'thead', 'caption', 'tbody', 'tr', 'th', 'td', 'pre', 'section', 'img', + 'figure', 'figcaption', 'span', 'label', 'input', + ], + allowedAttributes: { + 'a': [ 'href', 'class', 'data-note-path' ], + 'img': [ 'src' ], + 'section': [ 'class', 'data-note-id' ], + 'figure': [ 'class' ], + 'span': [ 'class', 'style' ], + 'label': [ 'class' ], + 'input': [ 'class', 'type', 'disabled' ], + 'code': [ 'class' ], + 'ul': [ 'class' ], + 'table': [ 'class' ], + 'en-media': [ 'hash' ] + }, + allowedSchemes: ['http', 'https', 'ftp', 'mailto', 'data', 'evernote'], + // transformTags: { + // 'h1': (tagName, attribs) => { + // return { + // tagName: '', + // // text: 'ddd' + // }; + // } + // }, + }); +} + +const fs = require("fs"); +const path = require("path"); +let sourceFiles = []; + +const getFilesRecursively = (directory) => { + const filesInDirectory = fs.readdirSync(directory); + for (const file of filesInDirectory) { + const absolute = path.join(directory, file); + if (fs.statSync(absolute).isDirectory()) { + getFilesRecursively(absolute); + } else { + sourceFiles.push(absolute); + } + } +}; + +getFilesRecursively('./docs'); + +for (const sourcePath of sourceFiles) { + console.log("Transforming file", sourcePath); + + const content = fs.readFileSync(sourcePath); + const transformedContent = transform(content); + + const destPath = sourcePath.replaceAll("docs", "docs/transformed"); + + fs.mkdirSync(path.dirname(destPath), {recursive: true}); + fs.writeFileSync(destPath, transformedContent); + + console.log(destPath); +} \ No newline at end of file