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" + '}'; } } };