/**
* 工具箱
*
* @file 工具箱,与tool不同,这里存放的工具仅限于本项目,util默认集成tool中所有方法
* @author Brian Li(lbxxlht@163.com)
*/
var define = typeof define === 'function' && define.amd ? define : function (factory) {
typeof module === 'object' ? (module.exports = factory(require)) : '';
};
define(function (require) {
var tool = require('./tool');
var Picker = require('./picker');
var util = {};
/**
* 栅格尺寸
* @CONST
*/
util.LATTICESIZE = 10;
/**
* 模板操作工具
*/
util.Picker = Picker;
/**
* 获取函数名,对匿名函数无效
*
* @param {Function} func 声明函数
* @return {string} 函数名
*/
util.getFunctionName = function (func) {
// NOT IE
if (func.name) {
return func.name;
}
// IE
return /function\s*(\w*)/i.exec(func.toString())[1];
};
/**
* 在原className上拼接一个新
*
* @param {string} className 原串
* @param {?string} append 拼接串
* @return {string} 拼接好的串
*/
util.joinClassName = function (className, append) {
if (typeof className !== 'string') {
className = '';
}
var arr = className.split(' ');
if (arr.indexOf(append) > -1) {
return className;
}
if (typeof append === 'string' && append.length > 0) {
arr.push(append);
}
return arr.join(' ').trim();
};
/**
* 从原className上移除一个class
*
* @param {string} className 原串
* @param {?string} remove 待移除传
* @return {string} 拼接好的串
*/
util.removeClassName = function (className, remove) {
className = typeof className !== 'string' ? '' : className;
remove = remove || '';
var arr = className.split(' ');
var result = [];
for (var i = 0; i < arr.length; i++) {
if (arr[i] === remove || arr[i] === '') {
continue;
}
result.push(arr[i]);
}
return result.join(' ');
};
/**
* 计算栅格尺寸
*
* @param {number} size 原先尺寸
* @return {?number} 计算后对应的栅格尺寸
*/
util.calcLatticeSize = function (size) {
if (isNaN(size)) {
return null;
}
size = ~~size;
var result = parseInt(~~size / this.LATTICESIZE, 10) * this.LATTICESIZE;
return result < size ? result + this.LATTICESIZE : result;
};
/**
* 向事件hash中添加新事件
*
* @param {Object} param ui实例初始化对象
* @param {string} type 事件的类型
* @param {Function} handler 将要被添加的事件
*/
util.appendHandler = function (param, type, handler) {
param.events = param.events || {};
param.events[type] = param.events[type] instanceof Array ? param.events[type] : [param.events[type]];
param.events[type].push(handler);
};
/**
* 是否为浏览器DOM对象
*
* @param {Object} obj 传入对象
* @return {boolean} 该对象是否为浏览器DOM
*/
util.isDOM = function (obj) {
Eif (this.inNode()) {
return false;
}
if (obj instanceof HTMLElement) {
return true;
}
return false;
};
/**
* 是否在node环境下运行
*
* @return {boolean} 当前是否在node.js环境下运行
*/
util.inNode = function () {
return typeof module !== 'undefined' && typeof module.exports !== 'undefined';
};
for (var key in tool) {
Eif (typeof tool[key] === 'function' && typeof util[key] !== 'function') {
util[key] = tool[key];
}
}
return util;
});
|