SHARE
TWEET

Untitled

a guest May 19th, 2017 39 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. (function (global) {
  2.     var origPrint = print;
  3.     var _serialize = function (obj) {
  4.         var str = JSON.stringify(obj, function(key, value) {
  5.             if (key && typeof value == 'object' && obj === value) {
  6.                 return '#[[Circular]]#';
  7.             }
  8.             else if (typeof value === 'function') {
  9.                 return '#[[Function]]#';
  10.             }
  11.             else if (typeof value === 'undefined') {
  12.                 return '#[undefined]#';
  13.             }
  14.             else if (value && typeof value === 'object' && !Array.isArray(value)) {
  15.                 var temp = {};
  16.                 Object.keys(value).forEach(function(k){
  17.                     var desc = Object.getOwnPropertyDescriptor(value, k) || {};
  18.                     if (desc.set && desc.get) temp[k] = '#[[Getter/Setter]]#';
  19.                     else if (desc.set) temp[k] = '#[[Setter]]#';
  20.                     else if (desc.get) temp[k] = '#[[Getter]]#';
  21.                     else temp[k] = value[k];
  22.                 });
  23.                 return temp;
  24.             }
  25.             return value;
  26.         }, 2);
  27.         str = str.replace(/"#\[(.*?)\]#"/g, '$1');
  28.         str = str.replace(/\\"/g,"\uFFFF");
  29.         str = str.replace(/\"([^"]+)\":/g,"$1:").replace(/\uFFFF/g,"\\\"");
  30.         return str;
  31.     }
  32.  
  33.     var _format = function(f) {
  34.         if (typeof f !== 'string') {
  35.             var objects = [];
  36.             for (var i = 0; i < arguments.length; i++) {
  37.                 objects.push(_serialize(arguments[i]));
  38.             }
  39.             return objects.join(' ');
  40.         }
  41.  
  42.         var i = 1;
  43.         var args = arguments;
  44.         var len = args.length;
  45.         var str = String(f).replace(/%[sdj%]/g, function(x) {
  46.             if (x === '%%') return '%';
  47.             if (i >= len) return x;
  48.             switch (x) {
  49.                 case '%s': return String(args[i++]);
  50.                 case '%d': return Number(args[i++]);
  51.                 case '%j': return _serialize(args[i++]);
  52.                 default: return x;
  53.             }
  54.         });
  55.         for (var x = args[i]; i < len; x = args[++i]) {
  56.             str += ' ' + _serialize(x);
  57.         }
  58.         return str;
  59.     };
  60.  
  61.     global.console = {
  62.         log : function(){
  63.             origPrint( _format.apply(null, arguments) )
  64.         }
  65.     };
  66. })(this);
RAW Paste Data
Challenge yourself this year...
Learn something new in 2017
Top