2014-01-02 19:46:46 +01:00
|
|
|
'use strict';
|
2013-12-27 23:50:13 +01:00
|
|
|
/*************************************************************************
|
|
|
|
## console global variable
|
|
|
|
|
|
|
|
ScriptCraft provides a `console` global variable with the followng methods...
|
|
|
|
|
|
|
|
* log()
|
|
|
|
* info()
|
|
|
|
* warn()
|
|
|
|
* error()
|
|
|
|
|
2013-12-28 13:12:45 +01:00
|
|
|
The ScriptCraft console methods work like the [Web API implementation][webcons].
|
2013-12-27 23:50:13 +01:00
|
|
|
|
|
|
|
### Example
|
|
|
|
|
|
|
|
console.log('Hello %s', 'world');
|
|
|
|
|
|
|
|
Basic variable substitution is supported (ScriptCraft's implementation
|
2014-12-23 15:31:20 +01:00
|
|
|
of console uses the Bukkit Plugin [Logger][lgr] or Canary Plugin [Logman][cmlgr] under the hood and
|
2013-12-27 23:50:13 +01:00
|
|
|
uses [java.lang.String.format()][strfmt] for variable
|
|
|
|
substitution. All output will be sent to the server console (not
|
|
|
|
in-game).
|
|
|
|
|
2013-12-28 13:12:45 +01:00
|
|
|
### Using string substitutions
|
|
|
|
|
|
|
|
ScriptCraft uses Java's [String.format()][strfmt] so any string substitution identifiers supported by
|
|
|
|
`java.lang.String.format()` are supported (e.g. %s , %d etc).
|
|
|
|
|
|
|
|
for (var i=0; i<5; i++) {
|
|
|
|
console.log("Hello, %s. You've called me %d times.", "Bob", i+1);
|
|
|
|
}
|
|
|
|
|
2013-12-27 23:50:13 +01:00
|
|
|
[lgr]: http://jd.bukkit.org/beta/apidocs/org/bukkit/plugin/PluginLogger.html
|
2014-12-23 15:31:20 +01:00
|
|
|
[cmlgr]: https://ci.visualillusionsent.net/job/CanaryLib/javadoc/net/canarymod/logger/Logman.html
|
2013-12-27 23:50:13 +01:00
|
|
|
[strfmt]: http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#format(java.lang.String, java.lang.Object...)
|
2013-12-28 13:12:45 +01:00
|
|
|
[webcons]: https://developer.mozilla.org/en-US/docs/Web/API/console
|
2013-12-27 23:50:13 +01:00
|
|
|
|
|
|
|
***/
|
2014-09-30 00:42:41 +02:00
|
|
|
function argsToArray( args ) {
|
2014-01-29 20:49:15 +01:00
|
|
|
var result = [];
|
|
|
|
for ( var i =0; i < args.length; i++ ) {
|
|
|
|
result.push(args[i]);
|
|
|
|
}
|
|
|
|
return result;
|
2013-12-27 23:50:13 +01:00
|
|
|
}
|
2014-09-30 00:42:41 +02:00
|
|
|
function consMsg(params){
|
|
|
|
var args = argsToArray(params);
|
2014-01-29 20:49:15 +01:00
|
|
|
if ( args.length > 1 ) {
|
2014-09-30 00:42:41 +02:00
|
|
|
return java.lang.String.format( args[0], args.slice(1) );
|
2014-01-29 20:49:15 +01:00
|
|
|
} else {
|
2014-09-30 00:42:41 +02:00
|
|
|
return args[0];
|
2014-01-29 20:49:15 +01:00
|
|
|
}
|
2014-09-30 00:42:41 +02:00
|
|
|
}
|
2013-12-27 23:50:13 +01:00
|
|
|
|
2014-09-30 00:42:41 +02:00
|
|
|
module.exports = function(logger){
|
2014-01-29 20:49:15 +01:00
|
|
|
|
2014-09-30 00:42:41 +02:00
|
|
|
function bukkitLog( level, restOfArgs ) {
|
|
|
|
logger['log(java.util.logging.Level,java.lang.String)'](
|
|
|
|
java.util.logging.Level[level],
|
|
|
|
consMsg(restOfArgs)
|
|
|
|
);
|
|
|
|
}
|
2014-01-29 20:49:15 +01:00
|
|
|
|
2014-09-30 00:42:41 +02:00
|
|
|
if (__plugin.canary){
|
|
|
|
return {
|
|
|
|
log: function( ) { logger.info( consMsg(arguments) ); },
|
|
|
|
info: function( ) { logger.info( consMsg(arguments) ); },
|
|
|
|
warn: function( ) { logger.warn( consMsg(arguments) ); },
|
|
|
|
error: function( ) { logger.error( consMsg(arguments) ); }
|
|
|
|
};
|
|
|
|
} else {
|
|
|
|
return {
|
|
|
|
log: function() { bukkitLog('INFO', arguments ); },
|
|
|
|
info: function() { bukkitLog('INFO', arguments ); },
|
|
|
|
warn: function( ) { bukkitLog('WARNING', arguments ); },
|
|
|
|
error: function( ) { bukkitLog('SEVERE', arguments ); }
|
|
|
|
};
|
|
|
|
}
|
2013-12-27 23:50:13 +01:00
|
|
|
};
|