sbin/res/app/frame/Opt.js
branchjsdoc
changeset 520 fe008e95a716
parent 519 46e21d060650
child 521 df716b99c5bb
child 522 2b1a07f1d797
--- a/sbin/res/app/frame/Opt.js	Fri Dec 23 10:59:23 2011 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,134 +0,0 @@
-/** @namespace */
-Opt = {
-	/**
-	 * Get commandline option values.
-	 * @param {Array} args Commandline arguments. Like ["-a=xml", "-b", "--class=new", "--debug"]
-	 * @param {object} optNames Map short names to long names. Like {a:"accept", b:"backtrace", c:"class", d:"debug"}.
-	 * @return {object} Short names and values. Like {a:"xml", b:true, c:"new", d:true}
-	 */
-	get: function(args, optNames) {
-		var opt = {"_": []}; // the unnamed option allows multiple values
-		for (var i = 0; i < args.length; i++) {
-			var arg = new String(args[i]);
-			var name;
-			var value;
-			if (arg.charAt(0) == "-") {
-				if (arg.charAt(1) == "-") { // it's a longname like --foo
-					arg = arg.substring(2);
-					var m = arg.split("=");
-					name = m.shift();
-					value = m.shift();
-					if (typeof value == "undefined") value = true;
-					
-					for (var n in optNames) { // convert it to a shortname
-						if (name == optNames[n]) {
-							name = n;
-						}
-					}
-				}
-				else { // it's a shortname like -f
-					arg = arg.substring(1);
-					var m = arg.split("=");
-					name = m.shift();
-					value = m.shift();
-					if (typeof value == "undefined") value = true;
-					
-					for (var n in optNames) { // find the matching key
-						if (name == n || name+'[]' == n) {
-							name = n;
-							break;
-						}
-					}
-				}
-				if (name.match(/(.+)\[\]$/)) { // it's an array type like n[]
-					name = RegExp.$1;
-					if (!opt[name]) opt[name] = [];
-				}
-				
-				if (opt[name] && opt[name].push) {
-					opt[name].push(value);
-				}
-				else {
-					opt[name] = value;
-				}
-			}
-			else { // not associated with any optname
-				opt._.push(args[i]);
-			}
-		}
-		return opt;
-	}
-}
-
-/*t:
-	plan(11, "Testing Opt.");
-	
-	is(
-		typeof Opt,
-		"object",
-		"Opt is an object."
-	);
-	
-	is(
-		typeof Opt.get,
-		"function",
-		"Opt.get is a function."
-	);
-	
-	var optNames = {a:"accept", b:"backtrace", c:"class", d:"debug", "e[]":"exceptions"};
-	var t_options = Opt.get(["-a=xml", "-b", "--class=new", "--debug", "-e=one", "-e=two", "foo", "bar"], optNames);
-	
-	is(
-		t_options.a,
-		"xml",
-		"an option defined with a short name can be accessed by its short name."
-	);
-	
-	is(
-		t_options.b,
-		true,
-		"an option defined with a short name and no value are true."
-	);
-	
-	is(
-		t_options.c,
-		"new",
-		"an option defined with a long name can be accessed by its short name."
-	);
-	
-	is(
-		t_options.d,
-		true,
-		"an option defined with a long name and no value are true."
-	);
-	
-	is(
-		typeof t_options.e,
-		"object",
-		"an option that can accept multiple values is defined."
-	);
-	
-	is(
-		t_options.e.length,
-		2,
-		"an option that can accept multiple values can have more than one value."
-	);
-	
-	is(
-		t_options.e[1],
-		"two",
-		"an option that can accept multiple values can be accessed as an array."
-	);
-	
-	is(
-		typeof t_options._,
-		"object",
-		"the property '_' is defined for unnamed options."
-	);
-	
-	is(
-		t_options._[0],
-		"foo",
-		"the property '_' can be accessed as an array."
-	);
- */
\ No newline at end of file