sync
[app.Builder.js] / tests / options.js
diff --git a/tests/options.js b/tests/options.js
deleted file mode 100644 (file)
index 5472d3f..0000000
+++ /dev/null
@@ -1,160 +0,0 @@
-//<script type="text/javascript">
-
-XObject = import XObject.XObject
-/**
- * Options parsing is needed as GLib's built in GOptionGroup is not feasible to use in an introspected way at present.
- * 
- * usage :
- * 
- * o = new Options(
- *    help_desription : 'Help about this',
- *    options : [
- *        { short : 'a', long: 'test', description : 'a test', flag_array: true , flag_boolean : false}
- *    ]
- * );
- * cfg = o.parse(Seed.argv);
- * 
- * Currently only supports simple parsing
- * eg. --longarg test -b test
- * 
- * Does not support --aaaaa=bbbb
- */
-Options  = XObject.define(
-    function (cfg) {
-        options = []; // default.
-        XObject.extend(this,cfg);
-    },
-    Object,
-    {
-        /**
-         * @cfg {String} help_description what appears at the start of the help message.
-         */
-        help_description: '',
-        /**
-         * @cfg {Boolean} If extra arguments are allowed.
-         */
-        allow_extra : false,
-        /**
-         * @param {Object} Resulting key/value of data.
-         */
-        result : false,
-        /**
-         * @prop {Array} the arguments
-         */
-        args: false,
-        /**
-         * @prop {Array} extra the arguments that are not accounted for.
-         */
-        extra: false,
-        /**
-         * parse the argv
-         * usage: options.parse(Seed.argv)
-         */
-        parse: function (argv)
-        {
-            var _this = this;
-            this.options.forEach(function(a) {
-                if (a.flag_boolean) {
-                    _this.result[a.name] = false;
-                    return;
-                }
-                if (a.flag_array) {
-                    _this.result[a.name] = [];
-                    return;
-                }
-            })
-            this.result = {};
-            this.extra = {};
-            var args = Array.prototype.slice.call(Seed.argv);
-            args.shift(); //seed
-            args.shift(); //script..
-        
-            for(var i =0; i < args.length;i++) {
-                
-                var a= this.findArg(args[i]);
-                
-                if (!a) {
-                    if (!this.allow_extra) {
-                        throw {
-                            name: "ArgumentError", 
-                            message: "Unknown argument: " + args[i] 
-                        };
-                    }
-                    this.extra.push(args[i]);
-                }
-                
-                if (a.long == 'help' ) {
-                    this.showHelp();
-                    return;
-                }
-                
-                if (a.flag_boolean) {
-                    this.result[a.long] = true;
-                    continue;
-                }
-                var next = args[i+1];
-                if (this.findArg(next)) {
-                    throw {
-                        name: "ArgumentError", 
-                        message: "Invalid argument sequence: " + args[i] + ' ' + next;
-                    };
-                }
-                // type juggling -- fixme...
-                
-                if (a.flag_array) {
-                    this.result[a.long].push(next);
-                    i++;
-                    continue;
-                }
-            
-                if (typeof(this.result[a.long]) != 'undefined') {
-                    throw {
-                        name: "ArgumentError", 
-                        message: "Invalid argument duplicate: " + args[i] + ' ' + next;
-                    };
-                }
-                
-                this.result[a.long] = next;
-                i++;
-            }
-            return this.result;
-        }
-        
-        
-    },
-    
-    findArg : function(str)
-    {
-        var ret = false;
-        var type = str.substring(0,1) == '-' ? 'short' : '';
-        type = str.substring(0,2) == '--' ? 'long' : type;
-        if (type == '') {
-            return false; // not an arg..
-        }
-        var match = str.substring(type =='long' ? 2 , 1);
-        this.options.forEach(function(o)) {
-            if (ret) {
-                return; // no more parsing.
-            }
-            if (o[type] == 'match') {
-                ret = o;
-            }
-            
-        }
-        return ret;
-        
-    },
-    
-    
-    showHelp: function()
-    {
-        print(this.help_description);
-        this.options.forEach(function(o) {
-            // fixme needs tidying up..
-            print('  --' + o.long + '   (-' + o.short + ')  ' + o.description);
-        }
-        Seed.quit();
-            
-    }
-}
\ No newline at end of file