Package: org.apache.commons.cli

## [Java] Class GroovyInternalPosixParser

- org.apache.commons.cli.GroovyInternalPosixParser

- 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.

- - ### Methods Summary

    Methods
    Type | Name and description
    --- | ---
    `protected void` | `burstToken(String token, boolean stopAtNonOption)` Breaks `token` into its constituent parts using the following algorithm.
    `protected String[]` | `flatten(Options options, String[] arguments, boolean stopAtNonOption)` An implementation of Parser's abstract flatten method.

  - ### Inherited Methods Summary

    Inherited Methods
    Methods inherited from class | Name
    --- | ---
    `class Parser` | `processArgs, parse, parse, parse, parse, wait, wait, wait, equals, toString, hashCode, getClass, notify, notifyAll`
    `class Object` | `wait, wait, wait, equals, toString, hashCode, getClass, notify, notifyAll`

- - ### Method Detail

    - #### protected void burstToken(String token, boolean stopAtNonOption)

      Breaks `token` into its constituent parts using the following algorithm.

      - ignore the first character ("-")
      - foreach remaining character check if an Option exists with that id.
      - if an Option does exist then add that character prepended with "-" to the list of processed tokens.
      - if the Option can have an argument value and there are remaining characters in the token then add the remaining characters as a token to the list of processed tokens.
      - if an Option does NOT exist AND `stopAtNonOption` IS set then add the special token "--" followed by the remaining characters and also the remaining tokens directly to the processed tokens list.
      - if an Option does NOT exist AND `stopAtNonOption` IS NOT set then add that character prepended with "-".
      Parameters:
        `token` - The current token to be burst
        `stopAtNonOption` - Specifies whether to stop processing at the first non-Option encountered.

    - #### protected String[] flatten(Options options, String[] arguments, boolean stopAtNonOption)

      An implementation of Parser's abstract flatten method.

      The following are the rules used by this flatten method.

      1. if `stopAtNonOption` is true then do not burst anymore of `arguments` entries, just add each successive entry without further processing. Otherwise, ignore `stopAtNonOption`.
      2. if the current `arguments` entry is "--" just add the entry to the list of processed tokens
      3. if the current `arguments` entry is "-" just add the entry to the list of processed tokens
      4. if the current `arguments` entry is two characters in length and the first character is "-" then check if this is a valid Option id. If it is a valid id, then add the entry to the list of processed tokens and set the current Option member. If it is not a valid id and `stopAtNonOption` is true, then the remaining entries are copied to the list of processed tokens. Otherwise, the current entry is ignored.
      5. if the current `arguments` entry is more than two characters in length and the first character is "-" then we need to burst the entry to determine its constituents. For more information on the bursting algorithm see burstToken.
      6. if the current `arguments` entry is not handled by any of the previous rules, then the entry is added to the list of processed tokens.
      Parameters:
        `options` - The command line Options
        `arguments` - The command line arguments to be parsed
        `stopAtNonOption` - Specifies whether to stop flattening when an non option is found.
      Returns:
        The flattened `arguments` String array.