summaryrefslogtreecommitdiff
path: root/node_modules/i/lib/native.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/i/lib/native.js')
-rw-r--r--node_modules/i/lib/native.js26
1 files changed, 26 insertions, 0 deletions
diff --git a/node_modules/i/lib/native.js b/node_modules/i/lib/native.js
new file mode 100644
index 0000000..d2c8de1
--- /dev/null
+++ b/node_modules/i/lib/native.js
@@ -0,0 +1,26 @@
+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);
+ });
+ }
+ }
+ });
+
+}