var fs = require("fs"), | |
pth = require("path"); | |
fs.existsSync = fs.existsSync || pth.existsSync; | |
module.exports = function(/*String*/path) { | |
var _path = path || "", | |
_permissions = 0, | |
_obj = newAttr(), | |
_stat = null; | |
function newAttr() { | |
return { | |
directory : false, | |
readonly : false, | |
hidden : false, | |
executable : false, | |
mtime : 0, | |
atime : 0 | |
} | |
} | |
if (_path && fs.existsSync(_path)) { | |
_stat = fs.statSync(_path); | |
_obj.directory = _stat.isDirectory(); | |
_obj.mtime = _stat.mtime; | |
_obj.atime = _stat.atime; | |
_obj.executable = !!(1 & parseInt ((_stat.mode & parseInt ("777", 8)).toString (8)[0])); | |
_obj.readonly = !!(2 & parseInt ((_stat.mode & parseInt ("777", 8)).toString (8)[0])); | |
_obj.hidden = pth.basename(_path)[0] === "."; | |
} else { | |
console.warn("Invalid path: " + _path) | |
} | |
return { | |
get directory () { | |
return _obj.directory; | |
}, | |
get readOnly () { | |
return _obj.readonly; | |
}, | |
get hidden () { | |
return _obj.hidden; | |
}, | |
get mtime () { | |
return _obj.mtime; | |
}, | |
get atime () { | |
return _obj.atime; | |
}, | |
get executable () { | |
return _obj.executable; | |
}, | |
decodeAttributes : function(val) { | |
}, | |
encodeAttributes : function (val) { | |
}, | |
toString : function() { | |
return '{\n' + | |
'\t"path" : "' + _path + ",\n" + | |
'\t"isDirectory" : ' + _obj.directory + ",\n" + | |
'\t"isReadOnly" : ' + _obj.readonly + ",\n" + | |
'\t"isHidden" : ' + _obj.hidden + ",\n" + | |
'\t"isExecutable" : ' + _obj.executable + ",\n" + | |
'\t"mTime" : ' + _obj.mtime + "\n" + | |
'\t"aTime" : ' + _obj.atime + "\n" + | |
'}'; | |
} | |
} | |
}; |