Advertisement
Guest User

Untitled

a guest
Mar 5th, 2015
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var specialConsole = (function() {
  2.     function writeLine (message) {
  3.         var args = [];
  4.  
  5.         if (writeLine.arguments.length > 1) {
  6.             for (var i = 1; i < arguments.length; i++) {
  7.                 args.push(arguments[i]);
  8.             };
  9.             return console.log(replacePlaceHolder(arguments[0],args));
  10.         } else {
  11.             return console.log(message);
  12.         };
  13.     }
  14.  
  15.     function writeError (message) {
  16.         var args = [];
  17.  
  18.         if (writeError.arguments.length > 1) {
  19.             for (var i = 1; i < arguments.length; i++) {
  20.                 args.push(arguments[i]);
  21.             };
  22.             return console.error(replacePlaceHolder(arguments[0],args));
  23.         } else {
  24.             return console.error(message);
  25.         };
  26.     }
  27.  
  28.     function writeWarning (message) {
  29.         var args = [];
  30.  
  31.         if (writeWarning.arguments.length > 1) {
  32.             for (var i = 1; i < arguments.length; i++) {
  33.                 args.push(arguments[i]);
  34.             };
  35.             return console.warn(replacePlaceHolder(arguments[0],args));
  36.         } else {
  37.             return console.warn(message);
  38.         };
  39.     }
  40.  
  41.     function writeInfo (message) {
  42.         var args = [];
  43.  
  44.         if (writeInfo.arguments.length > 1) {
  45.             for (var i = 1; i < arguments.length; i++) {
  46.                 args.push(arguments[i]);
  47.             };
  48.             return console.warn(replacePlaceHolder(arguments[0],args));
  49.         } else {
  50.             return console.warn(message);
  51.         };
  52.     }
  53.  
  54.     function replacePlaceHolder(message,args) {
  55.         var hasPlaceHolder = false;
  56.         var nextArg = 0;
  57.         var newMessage = "";
  58.         for (var i = 0; i < message.length - 2; i+= 1) {
  59.             if (message[i] == "{" && message[i + 2] == "}" && isNumber(message[i + 1])) {
  60.                 if (parseInt(message[i + 1] + 1) > args.length)  {
  61.                     throw new Error("There are not enough arguments passed to the function");
  62.                 };
  63.                 if (args[nextArg].hasOwnProperty("toString")) {
  64.                     newMessage = message.replace(nextArg, args[nextArg].toString());
  65.                     nextArg++;
  66.                 } else {
  67.                     newMessage = message.replace(nextArg, args[nextArg]);
  68.                     nextArg++;
  69.                 };
  70.                
  71.             };
  72.         };
  73.        
  74.         function isNumber(n) {
  75.             return !isNaN(parseFloat(n)) && isFinite(n);
  76.         }
  77.  
  78.         return newMessage;
  79.     }
  80.  
  81.     return {
  82.         writeLine: writeLine,
  83.         writeError: writeError,
  84.         writeWarning: writeWarning,
  85.         writeInfo: writeInfo
  86.     }
  87.  
  88. })();
  89.  
  90. specialConsole.writeLine("Message: hello");
  91. specialConsole.writeLine("Message: {0}", "hello");
  92. specialConsole.writeLine("Object: {0}", { name: "Gosho", toString: function() { return this.name }});
  93. specialConsole.writeError("Error: {0}", "A fatal error has occurred.");
  94. specialConsole.writeWarning("Warning: {0}", "You are not allowed to do that!");
  95. specialConsole.writeInfo("Info: {0}", "Hi there! Here is some info for you.");
  96. specialConsole.writeError(Error" object: {0}", { msg: "An error happened", toString: function() { return this.msg }});
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement