Files
CHOMPStation2/tools/playsound_finder/index.js
2020-08-21 09:33:03 -07:00

72 lines
1.8 KiB
JavaScript

var fs = require('fs');
// List all files in a directory in Node.js recursively in a synchronous fashion
var walkSync = function(dir, filelist) {
var files = fs.readdirSync(dir);
filelist = filelist || [];
files.forEach(function(file) {
if (fs.statSync(dir + file).isDirectory()) {
filelist = walkSync(dir + file + '/', filelist);
}
else {
filelist.push(dir + file);
}
});
return filelist;
};
var findNearestAbsolute = (data, line) => {
for (let i = line; i > 0; i--) {
let str = data[i];
if (str && str.match(/^\//)) {
return str.trim().replace(/,/g, "|");
}
}
return null
}
var main = () => {
let files = walkSync("code/");
let matches = {};
for (let file of files) {
const data = fs.readFileSync(file, "utf8");
if (!data.match(/playsound.*/)) {
continue
}
if(!matches[file]) matches[file] = [];
const dataArray = data.split("\n");
let i = 1;
for (let line of dataArray) {
i++;
let m = line.match(/playsound.*/)
if (m) {
matches[file].push({line: i, match: m[0], src: findNearestAbsolute(dataArray, i)});
}
}
}
Object.keys(matches).map(file => {
let allResults = matches[file];
allResults.map(obj => {
obj.params = obj.match.split(",");
for (var i = 0; i < obj.params.length; i++) {
obj.params[i] = obj.params[i].trim().replace(/playsound\(/g, "").replace(/\)/g, "");
}
})
});
// Final loop, spit out a csv
Object.keys(matches).map(file => {
let thisFileCsvEntry = "";
let allResults = matches[file];
for (let matchObj of allResults) {
thisFileCsvEntry += `${file},${matchObj.line},${matchObj.src},${matchObj.params.join(",")}\n`;
}
fs.appendFileSync("results.csv", thisFileCsvEntry);
});
}
main();