UNPKG

steal

Version:
142 lines (138 loc) 3.85 kB
/*global window: false, console: true, opera: true */ // /** * @property steal.dev * @parent stealjs * * Provides helper functions for development that get removed when put in production mode. * This means you can leave <code>steal.dev.log("hello world")</code> in your code and it * will get removed in prodution. * * ## Examples * * steal.dev.log("Something is happening"); * steal.dev.warn("Something bad is happening"); * */ (function(){ var dev = { regexps: { colons: /::/, words: /([A-Z]+)([A-Z][a-z])/g, lowerUpper: /([a-z\d])([A-Z])/g, dash: /([a-z\d])([A-Z])/g }, underscore: function( s ) { var regs = this.regexps; return s.replace(regs.colons, '/'). replace(regs.words, '$1_$2'). replace(regs.lowerUpper, '$1_$2'). replace(regs.dash, '_').toLowerCase(); }, isHappyName: function( name ) { //make sure names are close to the current path var path = steal.cur().path.replace(/\.[^$]+$/, "").split('/'), //make sure parts in name match parts = name.split('.'); for ( var i = 0; i < parts.length && path.length; i++ ) { if (path[i] && parts[i].toLowerCase() != path[i] && this.underscore(parts[i]) != path[i] && this.underscore(parts[i]) != path[i].replace(/_controller/, "") ) { this.warn("Are you sure " + name + " belongs in " + steal.cur().path); } } }, /** * @function steal.dev.warn * @parent steal.dev * * @signature `steal.dev.warn(out)` * @param {String} out the message * * @body * Adds a warning message to the console. * * steal.dev.warn("something evil"); * */ warn: function( out ) { var ll = steal.config('logLevel'); if(ll < 2){ Array.prototype.unshift.call(arguments, 'steal.js WARNING:'); if ( window.console && console.warn ) { this._logger( "warn", Array.prototype.slice.call(arguments) ); } else if ( window.console && console.log ) { this._logger( "log", Array.prototype.slice.call(arguments) ); } else if ( window.opera && window.opera.postError ) { opera.postError("steal.js WARNING: " + out); } } }, /** * @function steal.dev.log * @parent steal.dev * * @signature `steal.dev.log(out)` * @param {String} out the message * * @body * Adds a message to the console. * * steal.dev.log("hi"); * */ log: function( out ) { var ll = steal.config('logLevel'); if (ll < 1) { var g = typeof window !== "undefined" ? window : global; if (g.console && console.log) { Array.prototype.unshift.call(arguments, 'steal.js INFO:'); this._logger( "log", Array.prototype.slice.call(arguments) ); } else if (g.opera && g.opera.postError) { opera.postError("steal.js INFO: " + out); } } }, /** * @function steal.dev.assert * @parent steal.dev * * @signature `steal.dev.assert(expression, [message])` * @param {*} expression to be evaluated. * @param {String} optional msg to display on error. * * @body * Throws an error if the `expression` provided is falsy. * * steal.dev.assert(""); // throws! * steal.dev.assert("", "custom message"); // throws! * */ assert: function(expression, msg) { var message = msg; if(!expression) { message = message || "Expected " + expression + " to be truthy"; throw new Error(message); } }, _logger:function(type, arr){ // test for console support if (typeof console == "object") { // test for console.log.apply support in IE8 if (typeof console.log == "object") { console[type](arr); } else { if(console.log.apply){ console[type].apply(console, arr); } else { console[type](arr); } } } } }; if(typeof steal !== "undefined") { steal.dev = dev; } else { module.exports = dev; } })();