flags() Netscript Function
============================

.. js:function:: flags(data)

    :RAM cost: 0 GB
    :param data array of pairs of strings: Flags definition.
    :returns: Object containing all the flags that were parsed or default.

    This function allows for a more flexible way of parsing script arguments
    than to just pass a fixed list in a fixed order. Options can be given
    names, and passed in any order, while having defined default values.

    The flag definition is an array of pairs of values: the first value is the
    name of the flag, and the 2nd value is the default value for that flag.

    The return object is a map containing flag names to the value. It also 
    contains the special field '_', which contains all arguments that were not
    flags.

    Example:

    .. code-block:: javascript

        // example.script
        var data = flags([
            ['delay', 0], // a default number means this flag is a number
            ['server', 'foodnstuff'], //  a default string means this flag is a string
            ['exclude', []], // a default array means this flag is a default array of string
            ['help', false], // a default boolean means this flag is a boolean
        ]);
        tprint(data);
        /*
        [home ~/]> run example.script
        {"_":[],"delay":0,"server":"foodnstuff","exclude":[],"help":false}
        [home ~/]> run example.script --delay 3000
        {"_":[],"server":"foodnstuff","exclude":[],"help":false,"delay":3000}
        [home ~/]> run example.script --delay 3000 --server harakiri-sushi
        {"_":[],"exclude":[],"help":false,"delay":3000,"server":"harakiri-sushi"}
        [home ~/]> run example.script --delay 3000 --server harakiri-sushi hello world
        {"_":["hello","world"],"exclude":[],"help":false,"delay":3000,"server":"harakiri-sushi"}
        [home ~/]> run example.script --delay 3000 --server harakiri-sushi hello world --exclude a --exclude b
        {"_":["hello","world"],"help":false,"delay":3000,"server":"harakiri-sushi","exclude":["a","b"]}
        [home ~/]> run example.script --help
        {"_":[],"delay":0,"server":"foodnstuff","exclude":[],"help":true}
        */