-
Notifications
You must be signed in to change notification settings - Fork 30
Expand file tree
/
Copy pathutils.js
More file actions
131 lines (120 loc) · 3.13 KB
/
utils.js
File metadata and controls
131 lines (120 loc) · 3.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
/**
* @fileoverview 一些公共的工具包,包括对象的拷贝,数组的重复使用,等等。
* @version 2012.10.04
*
*/
/**
* @description 对象的扩展,将target中的元素进行拷贝复制
* @param {object} target 原对象
* @param {object} options 需要拷贝的目标对象
*/
exports.extend = function(target, options) {
for (var i in options) {
var copy = options[i];
if ( copy instanceof Array) {
target[i] = this.extend(target[i], copy);
} else if ( copy instanceof Object) {
target[i] = this.extend(target[i], copy);
} else {
target[i] = copy;
}
}
return target;
};
/**
* @description 根据浏览器的版本做判断
* @param {string} ua
*/
exports.browser = function(ua) {
if (!ua) {
return;
}
var reg = {
webkit : /(webkit)[ \/]([\w.]+)/,
opera : /(opera)(?:.*version)?[ \/]([\w.]+)/,
msie : /(msie) ([\w.]+)/,
mozilla : /(mozilla)(?:.*? rv:([\w.]+))?/
};
ua = ua.toLowerCase();
var match = reg.webkit.exec(ua) || reg.opera.exec(ua) || reg.msie.exec(ua) || ua.indexOf("compatible") < 0 && reg.mozilla.exec(ua) || [];
return {
browser : match[1] || "",
version : match[2] || "0"
};
};
/**
* @description 获取字符串的md5数值
* @param {string} str
*/
var crypto = require('crypto');
exports.getMD5 = function(str) {
return crypto.createHash('md5').update(str).digest('hex');
};
/**
* 转义字符串中的特殊HTML符号
* @param {String} str 要替换的字符串
* @return {String}
*/
exports.encodeSpecialHtmlChar = function(str) {
if (str) {
var codingchar = ['"', '&', '<', '>'];
var sepchar = ['"', '&', '<', '>'];
var len = sepchar.length;
for (var i = 0; i < len; i++) {
str = str.replace(new RegExp(codingchar[i], "g"), sepchar[i]);
}
return str;
} else {
return "";
}
};
/**
* 反转义字符串中的特殊HTML符号
* @param {String} str 要替换的字符串
* @return {String}
*/
exports.decodeSpecialHtmlChar = function(str) {
if (str) {
var codingchar = ['"', '&', '<', '>'];
var sepchar = ['"', '&', '<', '>'];
var len = sepchar.length;
for (var i = 0; i < len; i++) {
str = str.replace(new RegExp(codingchar[i], "g"), sepchar[i]);
}
return str;
} else {
return "";
}
};
/**
* 获取整个字符的长度
*
*/
exports.countChars = function(str, len, flag) {
if (str) {
var strLen = str.replace(/[\u4e00-\u9fa5\s]/g, '**').length, newStr = [], totalCount = 0;
if (strLen <= len) {
return str;
} else {
for (var i = 0; i < strLen; i++) {
var nowValue = str.charAt(i);
if (/[^\x00-\xff]/.test(nowValue)) {
totalCount += 2;
} else {
totalCount += 1;
}
newStr.push(nowValue);
if (totalCount >= len) {
break;
}
}
if (flag) {
return newStr.join('');
} else {
return newStr.join('') + '...';
}
}
} else {
return '';
}
};