const fs = require('fs');
const EventEmitter = require('events').EventEmitter;
class FindPattern extends EventEmitter {
constructor(regex) {
super();
this.regex = regex;
this.files = [];
}
addFile(file) {
this.files.push(file);
return this;
}
find() {
this.files.forEach((file, index) => {
fs.readFile(file, (err, content) => {
if(err) {
this.emit('error', err);
}
this.emit('fileRead', file);
if(this.regex.test(content)) {
this.emit('found', content);
}
})
})
}
}
const interface = new FindPattern(new RegExp("main"));
interface.addFile('a.js')
.addFile('b.js')
.addFile('main.js')
.on('error', function(err) {
console.log(err);
})
.on('fileRead', function(file) {
console.log(file + ' read\n');
})
.on('found', function(content) {
console.log(content.toString());
console.log('\n');
})
.find()
网友评论