mirror of
https://github.com/thinkjs/thinkjs.git
synced 2026-01-25 14:42:47 +00:00
118 lines
3.0 KiB
JavaScript
118 lines
3.0 KiB
JavaScript
var fs = require("fs");
|
||
var path = require("path");
|
||
var util = require("util");
|
||
/**
|
||
* 动态创建一个类
|
||
* @return {[type]} [description]
|
||
*/
|
||
global.Class = function (prop) {
|
||
var cls = function () {
|
||
function T(args) {
|
||
this.init && this.init.apply(this, args);
|
||
return this;
|
||
}
|
||
var _t = arguments.callee;
|
||
T.prototype = _t.prototype;
|
||
T.constructor = _t;
|
||
return new T(arguments);
|
||
};
|
||
cls.extend = function(pro){
|
||
global.extend(cls.prototype, pro);
|
||
};
|
||
cls.inherits = function(superCls){
|
||
util.inherits(cls, superCls);
|
||
}
|
||
if (typeof prop == 'function') {
|
||
prop = prop();
|
||
};
|
||
prop = prop || {};
|
||
for(var name in prop){
|
||
cls.prototype[name] = prop[name];
|
||
}
|
||
return cls;
|
||
}
|
||
/**
|
||
* extend
|
||
* from jquery
|
||
* @return {[type]} [description]
|
||
*/
|
||
global.extend = function(origin, add){
|
||
if (typeof add == 'function') {
|
||
add = add();
|
||
};
|
||
return util._extend(origin, add);
|
||
};
|
||
global.is_object = function(obj){
|
||
return Object.prototype.toString.call(obj) == '[object Object]';
|
||
}
|
||
global.is_string = function(obj){
|
||
return Object.prototype.toString.call(obj) == '[object String]';
|
||
}
|
||
global.is_array = function(obj){
|
||
return Array.isArray(obj);
|
||
}
|
||
global.is_file = function(p){
|
||
if (!fs.existsSync(p)) {
|
||
return false;
|
||
};
|
||
var stats = fs.statSync(p);
|
||
return stats.isFile();
|
||
}
|
||
global.is_dir = function(p){
|
||
if (!fs.existsSync(p)) {
|
||
return false;
|
||
};
|
||
var stats = fs.statSync(p);
|
||
return stats.isDirectory();
|
||
}
|
||
/**
|
||
* 递归创建目录,同步模式
|
||
* @param {[type]} p [description]
|
||
* @param {[type]} mode [description]
|
||
* @return {[type]} [description]
|
||
*/
|
||
global.mkdir = function(p, mode){
|
||
mode = mode || 0777;
|
||
if (fs.existsSync(p)) {
|
||
return true;
|
||
};
|
||
var pp = path.dirname(p);
|
||
if (fs.existsSync(pp)) {
|
||
fs.mkdirSync(p, mode);
|
||
}else{
|
||
global.mkdir(pp, mode);
|
||
global.mkdir(p, mode);
|
||
}
|
||
return true;
|
||
}
|
||
/**
|
||
* 判断一个目录是否可写
|
||
* @param {[type]} p [description]
|
||
* @return {Boolean} [description]
|
||
*/
|
||
global.is_writable = function(p){
|
||
if (!fs.existsSync(p)) {
|
||
return false;
|
||
};
|
||
var stats = fs.statSync(p);
|
||
var mode = stats.mode;
|
||
var uid = process.getuid();
|
||
var gid = process.getgid();
|
||
var owner = uid == stats.uid;
|
||
var group = gid == stats.gid;
|
||
return owner && (mode & 00200) || // User is owner and owner can write.
|
||
group && (mode & 00020) || // User is in group and group can write.
|
||
(mode & 00002); // Anyone can write.
|
||
}
|
||
/**
|
||
* 获取文件内容
|
||
* @param {[type]} file [description]
|
||
* @return {[type]} [description]
|
||
*/
|
||
global.file_get_contents = function(file){
|
||
if (!fs.existsSync(file)) {
|
||
return '';
|
||
};
|
||
var encoding = C("encoding") || "utf8";
|
||
return fs.readFileSync(file, encoding);
|
||
} |