This repository has been archived on 2021-07-14. You can view files and clone it, but cannot push or open issues or pull requests.
scriptcraft/src/main/js/lib/console.js
walterhiggins 19162c3688 First phase of transition from Bukkit to Canary.
Some of the plugins are not yet supported.
If you're feeling brave you can build from source using ant.
2014-09-29 23:42:41 +01:00

79 lines
2.3 KiB
JavaScript

'use strict';
/*************************************************************************
## console global variable
ScriptCraft provides a `console` global variable with the followng methods...
* log()
* info()
* warn()
* error()
The ScriptCraft console methods work like the [Web API implementation][webcons].
### Example
console.log('Hello %s', 'world');
Basic variable substitution is supported (ScriptCraft's implementation
of console uses the Bukkit Plugin [Logger][lgr] under the hood and
uses [java.lang.String.format()][strfmt] for variable
substitution. All output will be sent to the server console (not
in-game).
### 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);
}
[lgr]: http://jd.bukkit.org/beta/apidocs/org/bukkit/plugin/PluginLogger.html
[strfmt]: http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#format(java.lang.String, java.lang.Object...)
[webcons]: https://developer.mozilla.org/en-US/docs/Web/API/console
***/
function argsToArray( args ) {
var result = [];
for ( var i =0; i < args.length; i++ ) {
result.push(args[i]);
}
return result;
}
function consMsg(params){
var args = argsToArray(params);
if ( args.length > 1 ) {
return java.lang.String.format( args[0], args.slice(1) );
} else {
return args[0];
}
}
module.exports = function(logger){
function bukkitLog( level, restOfArgs ) {
logger['log(java.util.logging.Level,java.lang.String)'](
java.util.logging.Level[level],
consMsg(restOfArgs)
);
}
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 ); }
};
}
};