diff --git a/packages/rocketchat-logger/ansispan.js b/packages/rocketchat-logger/ansispan.js new file mode 100644 index 00000000000..8f9948f195e --- /dev/null +++ b/packages/rocketchat-logger/ansispan.js @@ -0,0 +1,41 @@ +ansispan = function (str) { + Object.keys(ansispan.foregroundColors).forEach(function (ansi) { + var span = ''; + + // + // `\033[Xm` == `\033[0;Xm` sets foreground color to `X`. + // + + str = str.replace( + new RegExp('\033\\[' + ansi + 'm', 'g'), + span + ).replace( + new RegExp('\033\\[0;' + ansi + 'm', 'g'), + span + ); + }); + // + // `\033[1m` enables bold font, `\033[22m` disables it + // + str = str.replace(/\033\[1m/g, '').replace(/\033\[22m/g, ''); + + // + // `\033[3m` enables italics font, `\033[23m` disables it + // + str = str.replace(/\033\[3m/g, '').replace(/\033\[23m/g, ''); + + str = str.replace(/\033\[m/g, ''); + str = str.replace(/\033\[0m/g, ''); + return str.replace(/\033\[39m/g, ''); +}; + +ansispan.foregroundColors = { + '30': 'black', + '31': 'red', + '32': 'green', + '33': 'yellow', + '34': 'blue', + '35': 'purple', + '36': 'cyan', + '37': 'white' +}; diff --git a/packages/rocketchat-logger/logger.coffee b/packages/rocketchat-logger/logger.coffee index 4f6795b2e66..3317996c970 100644 --- a/packages/rocketchat-logger/logger.coffee +++ b/packages/rocketchat-logger/logger.coffee @@ -63,3 +63,11 @@ wrapLifeCycle = (original, prefix, color) -> Template.prototype.onCreated = wrapLifeCycle Template.prototype.onCreated, 'onCreated', 'blue' Template.prototype.onRendered = wrapLifeCycle Template.prototype.onRendered, 'onRendered', 'green' Template.prototype.onDestroyed = wrapLifeCycle Template.prototype.onDestroyed, 'onDestroyed', 'red' + +# stdout = new Meteor.Collection 'stdout' + +# Meteor.subscribe 'stdout' + +# stdout.find().observe +# added: (record) -> +# console.log ansispan record.string diff --git a/packages/rocketchat-logger/package.js b/packages/rocketchat-logger/package.js index 5906ab12465..8566a71aad8 100644 --- a/packages/rocketchat-logger/package.js +++ b/packages/rocketchat-logger/package.js @@ -15,6 +15,7 @@ Package.onUse(function(api) { api.use('raix:eventemitter'); api.use('templating', 'client', {weak: true}); + api.addFiles('ansispan.js', 'client'); api.addFiles('logger.coffee', 'client'); api.addFiles('server.coffee', 'server'); diff --git a/packages/rocketchat-logger/server.coffee b/packages/rocketchat-logger/server.coffee index 97b36b93056..c8da998332b 100644 --- a/packages/rocketchat-logger/server.coffee +++ b/packages/rocketchat-logger/server.coffee @@ -160,3 +160,13 @@ options.arguments.unshift @getPrefix(options) console.log.apply console, options.arguments + +# Meteor.publish 'stdout', -> +# write = process.stdout.write +# process.stdout.write = (string, encoding, fd) => +# write.apply(process.stdout, arguments) +# id = Random.id() +# @added 'stdout', id, {string: string} +# @removed 'stdout', id + +# @ready()