Apache Commons CLI Source Code Files

Apache Commons CLI Source Code Files are provided in the source package file commons-cli-1.5.0-sources.jar.

You can download commons-cli-1.5.0-src.zip as described in the previous tutorial and go to the "src/main/java/" sub-folder to view Source Code files.

You can also browse Apache Commons CLI Source Code files below:

✍: FYIcenter.com

org/apache/commons/cli/GnuParser.java

/*
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
 */

package org.apache.commons.cli;

import java.util.ArrayList;
import java.util.List;

/**
 * The class GnuParser provides an implementation of the {@link Parser#flatten(Options, String[], boolean) flatten}
 * method.
 *
 * @deprecated since 1.3, use the {@link DefaultParser} instead
 */
@Deprecated
public class GnuParser extends Parser {
    /**
     * This flatten method does so using the following rules:
     * <ol>
     * <li>If an {@link Option} exists for the first character of the {@code arguments} entry <b>AND</b> an
     * {@link Option} does not exist for the whole {@code argument} then add the first character as an option to the
     * processed tokens list e.g. "-D" and add the rest of the entry to the also.</li>
     * <li>Otherwise just add the token to the processed tokens list.</li>
     * </ol>
     *
     * @param options The Options to parse the arguments by.
     * @param arguments The arguments that have to be flattened.
     * @param stopAtNonOption specifies whether to stop flattening when a non option has been encountered
     * @return a String array of the flattened arguments
     */
    @Override
    protected String[] flatten(final Options options, final String[] arguments, final boolean stopAtNonOption) {
        final List<String> tokens = new ArrayList<>();

        boolean eatTheRest = false;

        for (int i = 0; i < arguments.length; i++) {
            final String arg = arguments[i];

            if ("--".equals(arg)) {
                eatTheRest = true;
                tokens.add("--");
            } else if ("-".equals(arg)) {
                tokens.add("-");
            } else if (arg.startsWith("-")) {
                final String opt = Util.stripLeadingHyphens(arg);

                if (options.hasOption(opt)) {
                    tokens.add(arg);
                } else if (opt.indexOf('=') != -1 && options.hasOption(opt.substring(0, opt.indexOf('=')))) {
                    // the format is --foo=value or -foo=value
                    tokens.add(arg.substring(0, arg.indexOf('='))); // --foo
                    tokens.add(arg.substring(arg.indexOf('=') + 1)); // value
                } else if (options.hasOption(arg.substring(0, 2))) {
                    // the format is a special properties option (-Dproperty=value)
                    tokens.add(arg.substring(0, 2)); // -D
                    tokens.add(arg.substring(2)); // property=value
                } else {
                    eatTheRest = stopAtNonOption;
                    tokens.add(arg);
                }
            } else {
                tokens.add(arg);
            }

            if (eatTheRest) {
                for (i++; i < arguments.length; i++) { // NOPMD
                    tokens.add(arguments[i]);
                }
            }
        }

        return tokens.toArray(Util.EMPTY_STRING_ARRAY);
    }
}

org/apache/commons/cli/GnuParser.java

 

Or download all of them as a single archive file:

File name: commons-cli-1.5.0-sources.jar
File size: 63124 bytes
Release date: 2021-10-27
Download 

 

Download Apache Commons CLI 1.4 Binary Package

Download Apache Commons CLI Source Package

Downloading and Reviewing commons-cli.jar

⇑⇑ FAQ for Apache Commons CLI JAR Library

2018-10-25, 13972👍, 0💬