51 lines
1.1 KiB
JavaScript
51 lines
1.1 KiB
JavaScript
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);
|
|
});
|
|
}
|
|
}
|
|
});
|
|
};
|