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
| module.exports = function (obj) {
| var addProperty = function (method, func) {
| String.prototype.__defineGetter__(method, func);
| };
|
| var stringPrototypeBlacklist = [
| '__defineGetter__',
| '__defineSetter__',
| '__lookupGetter__',
| '__lookupSetter__',
| 'charAt',
| 'constructor',
| 'hasOwnProperty',
| 'isPrototypeOf',
| 'propertyIsEnumerable',
| 'toLocaleString',
| 'toString',
| 'valueOf',
| 'charCodeAt',
| 'indexOf',
| 'lastIndexof',
| 'length',
| 'localeCompare',
| 'match',
| 'replace',
| 'search',
| 'slice',
| 'split',
| 'substring',
| 'toLocaleLowerCase',
| 'toLocaleUpperCase',
| 'toLowerCase',
| 'toUpperCase',
| 'trim',
| 'trimLeft',
| 'trimRight',
| 'gsub',
| ];
|
| Object.keys(obj).forEach(function (key) {
| if (key != 'inflect' && key != 'inflections') {
| if (stringPrototypeBlacklist.indexOf(key) !== -1) {
| console.log('warn: You should not override String.prototype.' + key);
| } else {
| addProperty(key, function () {
| return obj[key](this);
| });
| }
| }
| });
| };
|
|