Skip to content
This repository has been archived by the owner on Apr 22, 2023. It is now read-only.

Commit

Permalink
core: make .deprecate() warn only once
Browse files Browse the repository at this point in the history
  • Loading branch information
Brandon Benvie authored and bnoordhuis committed Jan 30, 2012
1 parent 5403a8c commit 52bd0f9
Showing 1 changed file with 15 additions and 6 deletions.
21 changes: 15 additions & 6 deletions src/node.js
Expand Up @@ -569,21 +569,30 @@
NativeModule._cache[this.id] = this;
};

// Wrap a core module's method in a wrapper that will warn on first use
// and then return the result of invoking the original function. After
// first being called the original method is restored.
NativeModule.prototype.deprecate = function(method, message) {
var original = this.exports[method];
var self = this;
var warned = false;
message = message || '';

Object.defineProperty(this.exports, method, {
enumerable: false,
value: function() {
message = self.id + '.' + method + ' is deprecated. ' + (message || '');
if (!warned) {
warned = true;
message = self.id + '.' + method + ' is deprecated. ' + message;

if ((new RegExp('\\b' + self.id + '\\b')).test(process.env.NODE_DEBUG))
console.trace(message);
else
console.error(message);
var moduleIdCheck = new RegExp('\\b' + self.id + '\\b');
if (moduleIdCheck.test(process.env.NODE_DEBUG))
console.trace(message);
else
console.error(message);

self.exports[method] = original;
self.exports[method] = original;
}
return original.apply(this, arguments);
}
});
Expand Down

0 comments on commit 52bd0f9

Please sign in to comment.