aboutsummaryrefslogtreecommitdiff
path: root/tools/jsdoc-toolkit-2.4.0/app/run.js
diff options
context:
space:
mode:
Diffstat (limited to 'tools/jsdoc-toolkit-2.4.0/app/run.js')
-rw-r--r--tools/jsdoc-toolkit-2.4.0/app/run.js348
1 files changed, 348 insertions, 0 deletions
diff --git a/tools/jsdoc-toolkit-2.4.0/app/run.js b/tools/jsdoc-toolkit-2.4.0/app/run.js
new file mode 100644
index 0000000..1f875cd
--- /dev/null
+++ b/tools/jsdoc-toolkit-2.4.0/app/run.js
@@ -0,0 +1,348 @@
+/**
+ * @fileOverview
+ * A bootstrap script that creates some basic required objects
+ * for loading other scripts.
+ * @author Michael Mathews, micmath@gmail.com
+ * @version $Id: run.js 756 2009-01-07 21:32:58Z micmath $
+ */
+
+/**
+ * @namespace Keep track of any messages from the running script.
+ */
+LOG = {
+ warn: function(msg, e) {
+ if (JSDOC.opt.q) return;
+ if (e) msg = e.fileName+", line "+e.lineNumber+": "+msg;
+
+ msg = ">> WARNING: "+msg;
+ LOG.warnings.push(msg);
+ if (LOG.out) LOG.out.write(msg+"\n");
+ else print(msg);
+ },
+
+ inform: function(msg) {
+ if (JSDOC.opt.q) return;
+ msg = " > "+msg;
+ if (LOG.out) LOG.out.write(msg+"\n");
+ else if (typeof LOG.verbose != "undefined" && LOG.verbose) print(msg);
+ }
+};
+LOG.warnings = [];
+LOG.verbose = false
+LOG.out = undefined;
+
+/**
+ * @class Manipulate a filepath.
+ */
+function FilePath(absPath, separator) {
+ this.slash = separator || "/";
+ this.root = this.slash;
+ this.path = [];
+ this.file = "";
+
+ var parts = absPath.split(/[\\\/]/);
+ if (parts) {
+ if (parts.length) this.root = parts.shift() + this.slash;
+ if (parts.length) this.file = parts.pop()
+ if (parts.length) this.path = parts;
+ }
+
+ this.path = this.resolvePath();
+}
+
+/** Collapse any dot-dot or dot items in a filepath. */
+FilePath.prototype.resolvePath = function() {
+ var resolvedPath = [];
+ for (var i = 0; i < this.path.length; i++) {
+ if (this.path[i] == "..") resolvedPath.pop();
+ else if (this.path[i] != ".") resolvedPath.push(this.path[i]);
+ }
+ return resolvedPath;
+}
+
+/** Trim off the filename. */
+FilePath.prototype.toDir = function() {
+ if (this.file) this.file = "";
+ return this;
+}
+
+/** Go up a directory. */
+FilePath.prototype.upDir = function() {
+ this.toDir();
+ if (this.path.length) this.path.pop();
+ return this;
+}
+
+FilePath.prototype.toString = function() {
+ return this.root
+ + this.path.join(this.slash)
+ + ((this.path.length > 0)? this.slash : "")
+ + this.file;
+}
+
+/**
+ * Turn a path into just the name of the file.
+ */
+FilePath.fileName = function(path) {
+ var nameStart = Math.max(path.lastIndexOf("/")+1, path.lastIndexOf("\\")+1, 0);
+ return path.substring(nameStart);
+}
+
+/**
+ * Get the extension of a filename
+ */
+FilePath.fileExtension = function(filename) {
+ return filename.split(".").pop().toLowerCase();
+};
+
+/**
+ * Turn a path into just the directory part.
+ */
+FilePath.dir = function(path) {
+ var nameStart = Math.max(path.lastIndexOf("/")+1, path.lastIndexOf("\\")+1, 0);
+ return path.substring(0, nameStart-1);
+}
+
+
+importClass(java.lang.System);
+
+/**
+ * @namespace A collection of information about your system.
+ */
+SYS = {
+ /**
+ * Information about your operating system: arch, name, version.
+ * @type string
+ */
+ os: [
+ new String(System.getProperty("os.arch")),
+ new String(System.getProperty("os.name")),
+ new String(System.getProperty("os.version"))
+ ].join(", "),
+
+ /**
+ * Which way does your slash lean.
+ * @type string
+ */
+ slash: System.getProperty("file.separator")||"/",
+
+ /**
+ * The path to the working directory where you ran java.
+ * @type string
+ */
+ userDir: new String(System.getProperty("user.dir")),
+
+ /**
+ * Where is Java's home folder.
+ * @type string
+ */
+ javaHome: new String(System.getProperty("java.home")),
+
+ /**
+ * The absolute path to the directory containing this script.
+ * @type string
+ */
+ pwd: undefined
+};
+
+// jsrun appends an argument, with the path to here.
+if (arguments[arguments.length-1].match(/^-j=(.+)/)) {
+ if (RegExp.$1.charAt(0) == SYS.slash || RegExp.$1.charAt(1) == ":") { // absolute path to here
+ SYS.pwd = new FilePath(RegExp.$1).toDir().toString();
+ }
+ else { // relative path to here
+ SYS.pwd = new FilePath(SYS.userDir + SYS.slash + RegExp.$1).toDir().toString();
+ }
+ arguments.pop();
+}
+else {
+ print("The run.js script requires you use jsrun.jar.");
+ quit();
+}
+
+// shortcut
+var File = Packages.java.io.File;
+
+/**
+ * @namespace A collection of functions that deal with reading a writing to disk.
+ */
+IO = {
+
+ /**
+ * Create a new file in the given directory, with the given name and contents.
+ */
+ saveFile: function(/**string*/ outDir, /**string*/ fileName, /**string*/ content) {
+ var out = new Packages.java.io.PrintWriter(
+ new Packages.java.io.OutputStreamWriter(
+ new Packages.java.io.FileOutputStream(outDir+SYS.slash+fileName),
+ IO.encoding
+ )
+ );
+ out.write(content);
+ out.flush();
+ out.close();
+ },
+
+ /**
+ * @type string
+ */
+ readFile: function(/**string*/ path) {
+ if (!IO.exists(path)) {
+ throw "File doesn't exist there: "+path;
+ }
+ return readFile(path, IO.encoding);
+ },
+
+ /**
+ * @param inFile
+ * @param outDir
+ * @param [fileName=The original filename]
+ */
+ copyFile: function(/**string*/ inFile, /**string*/ outDir, /**string*/ fileName) {
+ if (fileName == null) fileName = FilePath.fileName(inFile);
+
+ var inFile = new File(inFile);
+ var outFile = new File(outDir+SYS.slash+fileName);
+
+ var bis = new Packages.java.io.BufferedInputStream(new Packages.java.io.FileInputStream(inFile), 4096);
+ var bos = new Packages.java.io.BufferedOutputStream(new Packages.java.io.FileOutputStream(outFile), 4096);
+ var theChar;
+ while ((theChar = bis.read()) != -1) {
+ bos.write(theChar);
+ }
+ bos.close();
+ bis.close();
+ },
+
+ /**
+ * Creates a series of nested directories.
+ */
+ mkPath: function(/**Array*/ path) {
+ if (path.constructor != Array) path = path.split(/[\\\/]/);
+ var make = "";
+ for (var i = 0, l = path.length; i < l; i++) {
+ make += path[i] + SYS.slash;
+ if (! IO.exists(make)) {
+ IO.makeDir(make);
+ }
+ }
+ },
+
+ /**
+ * Creates a directory at the given path.
+ */
+ makeDir: function(/**string*/ path) {
+ (new File(path)).mkdir();
+ },
+
+ /**
+ * @type string[]
+ * @param dir The starting directory to look in.
+ * @param [recurse=1] How many levels deep to scan.
+ * @returns An array of all the paths to files in the given dir.
+ */
+ ls: function(/**string*/ dir, /**number*/ recurse, _allFiles, _path) {
+ if (_path === undefined) { // initially
+ var _allFiles = [];
+ var _path = [dir];
+ }
+ if (_path.length == 0) return _allFiles;
+ if (recurse === undefined) recurse = 1;
+
+ dir = new File(dir);
+ if (!dir.directory) return [String(dir)];
+ var files = dir.list();
+
+ for (var f = 0; f < files.length; f++) {
+ var file = String(files[f]);
+ if (file.match(/^\.[^\.\/\\]/)) continue; // skip dot files
+
+ if ((new File(_path.join(SYS.slash)+SYS.slash+file)).list()) { // it's a directory
+ _path.push(file);
+ if (_path.length-1 < recurse) IO.ls(_path.join(SYS.slash), recurse, _allFiles, _path);
+ _path.pop();
+ }
+ else {
+ _allFiles.push((_path.join(SYS.slash)+SYS.slash+file).replace(SYS.slash+SYS.slash, SYS.slash));
+ }
+ }
+
+ return _allFiles;
+ },
+
+ /**
+ * @type boolean
+ */
+ exists: function(/**string*/ path) {
+ file = new File(path);
+
+ if (file.isDirectory()){
+ return true;
+ }
+ if (!file.exists()){
+ return false;
+ }
+ if (!file.canRead()){
+ return false;
+ }
+ return true;
+ },
+
+ /**
+ *
+ */
+ open: function(/**string*/ path, /**string*/ append) {
+ var append = true;
+ var outFile = new File(path);
+ var out = new Packages.java.io.PrintWriter(
+ new Packages.java.io.OutputStreamWriter(
+ new Packages.java.io.FileOutputStream(outFile, append),
+ IO.encoding
+ )
+ );
+ return out;
+ },
+
+ /**
+ * Sets {@link IO.encoding}.
+ * Encoding is used when reading and writing text to files,
+ * and in the meta tags of HTML output.
+ */
+ setEncoding: function(/**string*/ encoding) {
+ if (/ISO-8859-([0-9]+)/i.test(encoding)) {
+ IO.encoding = "ISO8859_"+RegExp.$1;
+ }
+ else {
+ IO.encoding = encoding;
+ }
+ },
+
+ /**
+ * @default "utf-8"
+ * @private
+ */
+ encoding: "utf-8",
+
+ /**
+ * Load the given script.
+ */
+ include: function(relativePath) {
+ load(SYS.pwd+relativePath);
+ },
+
+ /**
+ * Loads all scripts from the given directory path.
+ */
+ includeDir: function(path) {
+ if (!path) return;
+
+ for (var lib = IO.ls(SYS.pwd+path), i = 0; i < lib.length; i++)
+ if (/\.js$/i.test(lib[i])) load(lib[i]);
+ }
+}
+
+// now run the application
+IO.include("frame.js");
+IO.include("main.js");
+
+main();