public boolean proceed()

in src/org/jetbrains/ether/Options.java [136:201]


        public boolean proceed (final Cursor cursor, final Callback callback) {
            if (cursor.endOf())
                return false;

            final String arg = cursor.look();

            if (! arg.startsWith("-")) {
                callback.addFree(arg);
                cursor.shift();
                return true;
            }

            if (myShort != null && arg.equals("-" + myShort)) {
                switch (myArgumentSpecifier) {
                    case NONE:
                        callback.update(myKey, SWITCH);
                        break;

                    default:
                        if (cursor.nextIsArg())
                            callback.update(myKey, new Value(cursor.lookahead()));
                        else
                            switch (myArgumentSpecifier) {
                                case OPTIONAL:
                                    callback.update(myKey, SWITCH);
                                    break;
                                case MANDATORY:
                                    callback.report("option \"" + arg + "\" requires an argument, discarding.");
                            }
                };

                cursor.shift();
                return true;
            }

            final Matcher m = myLongPattern.matcher(arg);

            if (myLong != null && m.matches()) {
                final String prm = m.group(2);

                switch (myArgumentSpecifier) {
                    case MANDATORY:
                        if (prm == null)
                            callback.report("option \"" + arg + "\" requires an argument, discarding.");
                        else
                            callback.update(myKey, new Value (prm));
                        break;

                    case NONE:
                        if (prm == null)
                            callback.update(myKey, SWITCH);
                        else
                            callback.report("option \"" + arg + "\" does not take an argument, omitting.");
                        break;

                    case OPTIONAL:
                        callback.update(myKey, prm == null ? SWITCH : new Value(prm));
                        break;
                }

                cursor.shift();
                return true;
            }

            return false;
        }