@zohodesk/docs-builder
Version:
docs-builder is used to build your own docs
42 lines (36 loc) • 1.27 kB
JavaScript
const parser = require('@babel/parser');
const traverse = require('@babel/traverse').default;
const generate = require('@babel/generator').default;
const path = require('path');
function getFilename(originalFilePath) {
return path.basename(originalFilePath, path.extname(originalFilePath));
}
function sourceCodeFormatter(source, filePath) {
const fileName = getFilename(filePath);
const ast = parser.parse(source, {
sourceType: 'module',
plugins: ['jsx']
});
traverse(ast, {
IfStatement(path) {
const test = path.node.test;
if (test.type === 'Identifier' && test.name === '__DOCS__') {
path.remove();
}
},
ExpressionStatement(path) {
const expression = path.node.expression;
if (
expression?.type === 'AssignmentExpression' &&
expression.left.type === 'MemberExpression'
) {
const leftExpr = generate(expression.left).code; // Get the left side expression as string
if (leftExpr === `${fileName}`) {
path.remove();
}
}
}
});
return generate(ast).code;
}
module.exports = sourceCodeFormatter;