-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfind.js
More file actions
26 lines (23 loc) · 757 Bytes
/
find.js
File metadata and controls
26 lines (23 loc) · 757 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
const fs = require('fs');
const findInFile = (pattern, path) => fs.readFileSync(path, 'utf8')
.split('\n')
.reduce((results, line) => {
if (~line.search(pattern)) {
results.push(line);
}
return results;
}, []);
const findInDirectory = (pattern, path, extensions = ['js', 'ts']) => {
let results = [];
fs.readdirSync(path).forEach(file => {
if (file !== 'node_modules') {
if (fs.statSync(`${path}/${file}`).isDirectory()) {
results = [...results, ...findInDirectory(pattern, `${path}/${file}`)];
} else if (~extensions.indexOf(file.split('.').pop())) {
results = [...results, ...findInFile(pattern, `${path}/${file}`)];
}
}
});
return results;
};
module.exports = findInDirectory;