Comments (4)
The isMatch
function fails in next section:
function isMatch(err, stats) {
if(err) { return callback(err); }
if(stats.isFile() && file == searchFile) {
callback(undefined, path+'/'+file);
} else if(stats.isDirectory()) {
statDirectory(path+'/'+file);
}
}
as file
is not in scope.
A possible implementation:
var fs=require('fs');
function statDirectory(path, searchFile, callback){
fs.readdir(path, function(err, files){
if (err){
return callback(err);
}
files.forEach(function(file){
function isMatch(err, stats){
if (err){
return callback(err);
}
if (stats.isFile() && file==searchFile){
callback(undefined, path+'/'+file);
} else if (stats.isDirectory()){
statDirectory(path+'/'+file, searchFile, callback);
}
}
fs.stat(path+'/'+file, isMatch);
});
});
}
statDirectory('./test', 'needle.txt', function(err, path) {
if(err) { throw err; }
console.log('Found file at: '+path);
});
from controlflow.
The function does not have file
in scope:
PathIterator.prototype.iterate = function(path) {
var self = this;
this.statDirectory(function(fpath, stats) {
if(stats.isFile()) {
self.emit('file', fpath, stats);
} else if(stats.isDirectory()) {
self.emit('directory', fpath, stats);
self.iterate(path+'/'+file);
}
});
};
might need to be changed to
// iterate path, emitting 'file' and 'directory' events
PathIterator.prototype.iterate=function(path){
var self=this;
this.statDirectory(path, function(fpath, stats){
if (stats.isFile()){
self.emit('file', fpath, stats);
} else if (stats.isDirectory()){
self.emit('directory', fpath, stats);
self.iterate(fpath);
}
});
};
from controlflow.
Function also doesn't have file
in scope:
function findFile(path, searchFile, callback) {
var pi = new PathIterator();
pi.on('file', function(file, stats) {
if(file == searchFile) {
callback(undefined, file);
}
});
pi.on('error', callback);
pi.iterate(path);
}
so an update could be:
function findFile(path, searchFile, callback){
var pi=new PathIterator();
pi.on('file', function(fpath, stats){
if (fpath.indexOf(searchFile)>-1){
callback(undefined, fpath);
}
});
pi.on('error', callback);
pi.iterate(path);
}
from controlflow.
findfile for async.js does not seem to work:
var async = require('asyncjs');
function findFile(path, searchFile, callback) {
async.readdir(path)
.stat()
.filter(function(file) {
return file.stat == searchFile;
})
.toString(callback);
}
A possible implmentation could be:
var async = require('asyncjs');
function findFile(path, searchFile, callback){
async.walkfiles(path, undefined, async.POSTORDER)
.stat()
.each(function (file){
if (file.name == searchFile){
callback(file);
}
})
.end();
}
from controlflow.
Related Issues (1)
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from controlflow.