summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Dahl <ry@tinyclouds.org>2010-11-30 11:18:02 -0800
committerRyan Dahl <ry@tinyclouds.org>2010-11-30 11:18:02 -0800
commit70188499b072e2b205e2079fe093e781163bbd67 (patch)
tree410d5592dea6ae45298221e17821e51c2fba6508
parent81afb54c0aad56d65071ec1fab898f197fca21a2 (diff)
downloadnode-70188499b072e2b205e2079fe093e781163bbd67.tar.gz
Lazy load console object
-rw-r--r--lib/console.js83
-rw-r--r--src/node.js82
2 files changed, 88 insertions, 77 deletions
diff --git a/lib/console.js b/lib/console.js
new file mode 100644
index 000000000..235713127
--- /dev/null
+++ b/lib/console.js
@@ -0,0 +1,83 @@
+var writeError = process.binding('stdio').writeError;
+
+// console object
+var formatRegExp = /%[sdj]/g;
+function format (f) {
+ if (typeof f !== 'string') {
+ var objects = [], util = require('util');
+ for (var i = 0; i < arguments.length; i++) {
+ objects.push(util.inspect(arguments[i]));
+ }
+ return objects.join(' ');
+ }
+
+
+ var i = 1;
+ var args = arguments;
+ var str = String(f).replace(formatRegExp, function (x) {
+ switch (x) {
+ case '%s': return args[i++];
+ case '%d': return +args[i++];
+ case '%j': return JSON.stringify(args[i++]);
+ default:
+ return x;
+ }
+ });
+ for (var len = args.length; i < len; ++i) {
+ str += ' ' + args[i];
+ }
+ return str;
+}
+
+
+exports.log = function () {
+ process.stdout.write(format.apply(this, arguments) + '\n');
+};
+
+
+exports.info = exports.log;
+
+
+exports.warn = function () {
+ writeError(format.apply(this, arguments) + '\n');
+};
+
+
+exports.error = exports.warn;
+
+
+exports.dir = function(object){
+ var util = require('util');
+ process.stdout.write(util.inspect(object) + '\n');
+};
+
+
+var times = {};
+exports.time = function(label){
+ times[label] = Date.now();
+};
+
+
+exports.timeEnd = function(label){
+ var duration = Date.now() - times[label];
+ exports.log('%s: %dms', label, duration);
+};
+
+
+exports.trace = function(label){
+ // TODO probably can to do this better with V8's debug object once that is
+ // exposed.
+ var err = new Error;
+ err.name = 'Trace';
+ err.message = label || '';
+ Error.captureStackTrace(err, arguments.callee);
+ console.error(err.stack);
+};
+
+
+exports.assert = function(expression){
+ if(!expression){
+ var arr = Array.prototype.slice.call(arguments, 1);
+ process.assert(false, format.apply(this, arr));
+ }
+};
diff --git a/src/node.js b/src/node.js
index 10925766b..4f4f22d8a 100644
--- a/src/node.js
+++ b/src/node.js
@@ -27,7 +27,6 @@ process.assert = function (x, msg) {
if (!x) throw new Error(msg || "assertion error");
};
-var writeError = process.binding('stdio').writeError;
var evals = process.binding('evals');
// lazy loaded.
@@ -115,9 +114,7 @@ var module = (function () {
var debugLevel = parseInt(process.env["NODE_DEBUG"], 16);
function debug (x) {
- if (debugLevel & 1) {
- process.binding('stdio').writeError(x + "\n");
- }
+ if (debugLevel & 1) console.error(x);
}
@@ -490,80 +487,11 @@ process.openStdin = function () {
};
-// console object
-var formatRegExp = /%[sdj]/g;
-function format (f) {
- if (typeof f !== 'string') {
- var objects = [], util = requireNative('util');
- for (var i = 0; i < arguments.length; i++) {
- objects.push(util.inspect(arguments[i]));
- }
- return objects.join(' ');
- }
-
-
- var i = 1;
- var args = arguments;
- var str = String(f).replace(formatRegExp, function (x) {
- switch (x) {
- case '%s': return args[i++];
- case '%d': return +args[i++];
- case '%j': return JSON.stringify(args[i++]);
- default:
- return x;
- }
- });
- for (var len = args.length; i < len; ++i) {
- str += ' ' + args[i];
- }
- return str;
-}
-
-global.console = {};
-
-global.console.log = function () {
- process.stdout.write(format.apply(this, arguments) + '\n');
-};
-
-global.console.info = global.console.log;
-
-global.console.warn = function () {
- writeError(format.apply(this, arguments) + '\n');
-};
-
-global.console.error = global.console.warn;
-
-global.console.dir = function(object){
- var util = requireNative('util');
- process.stdout.write(util.inspect(object) + '\n');
-};
-
-var times = {};
-global.console.time = function(label){
- times[label] = Date.now();
-};
-
-global.console.timeEnd = function(label){
- var duration = Date.now() - times[label];
- global.console.log('%s: %dms', label, duration);
-};
-
-global.console.trace = function(label){
- // TODO probably can to do this better with V8's debug object once that is
- // exposed.
- var err = new Error;
- err.name = 'Trace';
- err.message = label || '';
- Error.captureStackTrace(err, arguments.callee);
- console.error(err.stack);
-};
+// Lazy load console object
+global.__defineGetter__('console', function () {
+ return requireNative('console');
+});
-global.console.assert = function(expression){
- if(!expression){
- var arr = Array.prototype.slice.call(arguments, 1);
- process.assert(false, format.apply(this, arr));
- }
-};
global.Buffer = requireNative('buffer').Buffer;