API/replace_punctuation.js

84 lines
1.9 KiB
JavaScript

const fs = require('fs');
const path = require('path');
const map = {
',': ',',
'.': '.',
':': ':',
'?': '?',
'!': '!',
'"': '"',
'"': '"',
''': "'",
''': "'",
'(': '(',
')': ')',
'[': '[',
']': ']',
',': ',',
';': ';'
};
function getAllFiles(dirPath, arrayOfFiles) {
const files = fs.readdirSync(dirPath);
arrayOfFiles = arrayOfFiles || [];
files.forEach(function(file) {
if (fs.statSync(dirPath + "/" + file).isDirectory()) {
arrayOfFiles = getAllFiles(dirPath + "/" + file, arrayOfFiles);
} else {
if (extensions.some(ext => file.endsWith(ext))) {
arrayOfFiles.push(path.join(dirPath, "/", file));
}
}
});
return arrayOfFiles;
}
const srcDirAPI = path.join(__dirname);
const srcDirWEB = path.join(__dirname, '../WEB');
const targetDirs = [srcDirAPI, srcDirWEB];
const extensions = ['.ts', '.js', '.tsx', '.jsx', '.vue', '.html', '.css', '.scss', '.less', '.json', '.md'];
let count = 0;
targetDirs.forEach(dir => {
if (fs.existsSync(dir)) {
const files = getAllFiles(dir);
files.forEach(file => {
// Skip node_modules, .git, dist, build, .idea, .vscode
if (file.includes('/node_modules/') ||
file.includes('/.git/') ||
file.includes('/dist/') ||
file.includes('/build/') ||
file.includes('/.idea/') ||
file.includes('/.vscode/') ||
file.includes('/coverage/')) {
return;
}
let content = fs.readFileSync(file, 'utf8');
let originalContent = content;
for (const [cn, en] of Object.entries(map)) {
const regex = new RegExp(cn, 'g');
content = content.replace(regex, en);
}
if (content !== originalContent) {
fs.writeFileSync(file, content, 'utf8');
console.log(`Updated: ${file}`);
count++;
}
});
} else {
console.warn(`Directory not found: ${dir}`);
}
});
console.log(`Total files updated: ${count}`);