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