From f50e6cd37cf84928095274bd1ce813cfdf377d34 Mon Sep 17 00:00:00 2001 From: "kts of kettek (muzukashi)" Date: Mon, 21 Dec 2015 22:53:38 -0800 Subject: [PATCH] Rudimentary commit containing current test implementation. --- index.js | 104 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ test.js | 42 ++++++++++++++++++++++ 2 files changed, 146 insertions(+) create mode 100644 index.js create mode 100644 test.js diff --git a/index.js b/index.js new file mode 100644 index 0000000..fb8944d --- /dev/null +++ b/index.js @@ -0,0 +1,104 @@ +var fs = require('fs'); +var util = require('util'); + +var streams = []; +var labels = {}; +var chain; + +function _log(arg1, arg2) { + var label = ''; + var msg = ''; + if (typeof arg2 === 'undefined') { + if (arg1 instanceof Arguments) { + for (var arg in arg1) { + msg += util.format(arg1[arg]); + } + } else { + msg = util.format(arg1); + } + } else { + label = arg1; + if (arg2 instanceof Arguments) { + for (var arg in arg2) { + msg += util.format(arg2[arg]); + } + } else { + msg = util.format(arg2); + } + } + + // build our output customization string + var str = ''; + if (typeof labels[label] !== 'undefined') { + for (var j = labels[label].length-1; j >= 0; j--) { + str = labels[label][j](str); + if (j == 0) str += ' '; + } + } + // write our string to our streams + for (var i = 0; i < streams.length; i++) { + streams[i].write(str+msg+'\n'); + } + return module.exports; +} + +function init(file) { + if (typeof file !== 'undefined') { + var writable = fs.createWriteStream(file); + streams.push(writable); + } + if (process.stdin.isTTY) { + streams.push(process.stdin); + } + return module.exports; +} +module.exports.init = init; + +function setup() { + var cur, last; + chain = cur = last = streams[0]; + for (var i = 0; i < streams.length; i++) { + cur = streams[i]; + if (last != cur) { + last.pipe(cur); + } + last = cur; + } + return module.exports; +} +module.exports.setup = setup; + +function _new(label, options) { + labels[label] = []; + if (typeof options !== 'undefined') { + if (options.logLabel == true) { + labels[label].push(function(str) { return label+str }); + } + if (options.logTime == true) { + labels[label].push(doTime); + } + } + streams[label] = []; + return get(label); +} +module.exports.new = _new; + +function get(label) { + return function() { _log(label, toArguments(arguments)) }; +} +module.exports.get = get; +module.exports.log = _new(''); + +function doTime(str) { + var new_str = '('+new Date().toISOString() + '):' + str; + return new_str; +} + +function Arguments() {}; +function toArguments(obj) { + var args = new Arguments(); + for (var attr in obj) { + args[attr] = obj[attr]; + } + return args; +} diff --git a/test.js b/test.js new file mode 100644 index 0000000..0cc207b --- /dev/null +++ b/test.js @@ -0,0 +1,42 @@ +var pLog = require('./index.js').init("file") +var perr = pLog.new('Error', {logTime: true, logLabel: true}); +var pdbg = pLog.new('Debug', {logLabel: true}); +var plog = pLog.get(''); + +//perr('test'); + +//plog('yo!'); +//plog('Warning', 'yo!'); +//plog('Warning', 'yo!'); +//plog('yo!'); + +//plog(plog); +//console.log(plog); + +//pdbg(a); + +function vara() { + console.log(arguments); + var obj = {}; + console.log(arguments[0] instanceof Arguments); + console.log(typeof arguments); +} + +r_vara = function() { + vara(toArguments(arguments)); +} + +function Arguments(obj) {}; +function toArguments(obj) { + var arg = new Arguments(); + for (var attr in obj) { + arg[attr] = obj[attr]; + } + return arg; +} + +var a = {a: '3'}; +plog('a', a, 'c'); + +//plog(a); +//console.log(a);