2015-01-06 23:31:49 +01:00
|
|
|
/*global load, args, Packages*/
|
2013-02-08 22:23:15 +01:00
|
|
|
/*
|
2014-10-05 18:29:04 +02:00
|
|
|
This script is run at build time to generate api.md - a single Markdown document containing documentation for ScriptCraft's API
|
|
|
|
*/
|
|
|
|
function foreach(array, func){
|
|
|
|
for (var i =0; i < array.length; i++){
|
|
|
|
func(array[i],i,array);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
/*
|
|
|
|
find - a (very) basic implementation of the unix command line tool.
|
|
|
|
*/
|
|
|
|
function find(dir,store,re) {
|
|
|
|
var files = dir.listFiles();
|
|
|
|
foreach (files, function(filename){
|
|
|
|
filename = "" + filename;
|
|
|
|
var file = new File(filename);
|
|
|
|
if (file.isDirectory()) {
|
|
|
|
find(file,store,re);
|
|
|
|
} else {
|
|
|
|
if (typeof re == "undefined")
|
|
|
|
store.push(filename);
|
|
|
|
else if (filename.match(re))
|
|
|
|
store.push(filename);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
/*
|
|
|
|
the main module file for a given directory
|
|
|
|
(assuming the main module is in a file with the same name as the parent
|
|
|
|
directory) - e.g. drone/drone.js
|
|
|
|
*/
|
|
|
|
function sorter( precedence ){
|
|
|
|
return function(a,b)
|
|
|
|
{
|
|
|
|
// convert from Java string to JS string
|
|
|
|
a = '' + a;
|
|
|
|
b = '' + b;
|
|
|
|
var aparts = a.split(/\//);
|
|
|
|
var bparts = b.split(/\//);
|
|
|
|
var adir = aparts.slice(3,aparts.length-1).join('/');
|
|
|
|
var afile = aparts[aparts.length-1];
|
|
|
|
var bdir = bparts.slice(3,bparts.length-1).join('/');
|
|
|
|
var bfile = bparts[bparts.length-1];
|
|
|
|
|
|
|
|
for (var i = 0;i < precedence.length; i++){
|
|
|
|
var re = precedence[i];
|
|
|
|
if (a.match(re) && b.match(re)){
|
|
|
|
if (afile < bfile)
|
|
|
|
return -1;
|
|
|
|
if (afile > bfile)
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
if (a.match(re))
|
|
|
|
return -1;
|
|
|
|
if (b.match(re))
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
if(adir<bdir) return -1;
|
|
|
|
if(adir>bdir) return 1;
|
|
|
|
afile = afile.replace(/\.js$/,'');
|
|
|
|
if (afile == adir){
|
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
var result = 0;
|
|
|
|
if (afile < bfile){
|
|
|
|
result = -1;
|
|
|
|
}
|
|
|
|
if (afile > bfile){
|
|
|
|
result = 1;
|
|
|
|
}
|
|
|
|
//err.println("afile: " + afile + ", bfile:" + bfile + ",result=" + result);
|
|
|
|
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
}
|
2013-12-31 22:09:50 +01:00
|
|
|
var err = java.lang.System.err;
|
2014-01-14 00:01:17 +01:00
|
|
|
args = Array.prototype.slice.call(args,1);
|
|
|
|
|
|
|
|
if (typeof importPackage == 'undefined'){
|
2014-10-05 18:29:04 +02:00
|
|
|
// load compatibility script
|
|
|
|
load('nashorn:mozilla_compat.js');
|
2014-01-14 00:01:17 +01:00
|
|
|
}
|
2013-02-08 22:23:15 +01:00
|
|
|
var dir = args[0];
|
2014-10-05 18:29:04 +02:00
|
|
|
|
2014-10-18 19:48:57 +02:00
|
|
|
var io = Packages.java.io;
|
|
|
|
var File = io.File;
|
2013-02-08 22:23:15 +01:00
|
|
|
var store = [];
|
2014-10-18 19:48:57 +02:00
|
|
|
find(new io.File(dir),store,/\/[a-zA-Z0-9_\-]+\.js$/);
|
2013-06-07 09:35:22 +02:00
|
|
|
|
2013-06-07 20:50:12 +02:00
|
|
|
store.sort(sorter([
|
2014-10-05 18:29:04 +02:00
|
|
|
/lib\/scriptcraft\.js$/,
|
|
|
|
/lib\/require\.js$/,
|
|
|
|
/lib\/plugin\.js$/,
|
|
|
|
/lib\/events\.js$/,
|
2015-01-03 21:57:30 +01:00
|
|
|
/lib\/events\-helper\-canary/,
|
|
|
|
/lib\/events\-helper\-bukkit/,
|
2014-10-05 18:29:04 +02:00
|
|
|
/lib\//,
|
2015-01-03 21:57:30 +01:00
|
|
|
/modules\/drone\/index\.js/,
|
|
|
|
/modules\/drone\//,
|
|
|
|
/plugins\/drone\//,
|
2014-10-05 18:29:04 +02:00
|
|
|
/modules\//,
|
|
|
|
/examples\//
|
2013-06-07 20:50:12 +02:00
|
|
|
]));
|
2013-06-07 09:35:22 +02:00
|
|
|
|
2013-02-08 22:23:15 +01:00
|
|
|
var contents = [];
|
2013-06-07 20:50:12 +02:00
|
|
|
foreach(store, function(filename){
|
2014-10-18 19:48:57 +02:00
|
|
|
var br = new io.BufferedReader(new io.FileReader(filename));
|
2014-10-05 18:29:04 +02:00
|
|
|
var line ;
|
|
|
|
while ( (line = br.readLine()) != null){
|
|
|
|
contents.push(line);
|
|
|
|
}
|
|
|
|
br.close();
|
2013-06-07 20:50:12 +02:00
|
|
|
});
|
|
|
|
|
2013-02-08 22:23:15 +01:00
|
|
|
var len = contents.length;
|
|
|
|
var writeComment = false;
|
|
|
|
var startComment = /^\/\*{10}/;
|
|
|
|
var endComment = /^\*{3}\//;
|
|
|
|
|
2013-06-07 20:50:12 +02:00
|
|
|
for (var i = 0;i < contents.length; i++){
|
2014-10-05 18:29:04 +02:00
|
|
|
var line = contents[i];
|
|
|
|
if (line.match(startComment)){
|
|
|
|
writeComment = true;
|
|
|
|
i++;
|
|
|
|
}
|
|
|
|
if (line.match(endComment)){
|
|
|
|
writeComment = false;
|
|
|
|
}
|
|
|
|
if (writeComment){
|
|
|
|
java.lang.System.out.println(contents[i]);
|
|
|
|
}
|
2013-02-08 22:23:15 +01:00
|
|
|
}
|
2013-06-07 20:50:12 +02:00
|
|
|
|