Package org.codehaus.groovy.cli

# Class GroovyPosixParser

java.lang.Object
org.apache.commons.cli.Parser
org.codehaus.groovy.cli.GroovyPosixParser

All Implemented Interfaces:
  `org.apache.commons.cli.CommandLineParser`

public class GroovyPosixParser extends org.apache.commons.cli.Parser
DO NOT USE. Hacked version until Commons CLI 1.3 is released. NOTE: this is a mirror copy of org.apache.commons.cli.GroovyInternalPosixParser DON'T MAKE CHANGES without keeping the other file in sync! The class GroovyPosixParser provides an implementation of the `flatten` method.

Author:
  John Keyes (john at integralsource.com), Paul King (Groovy hacks/fixes)

## Field Summary

### Fields inherited from class org.apache.commons.cli.Parser

`cmd`

## Constructor Summary

Constructors
Constructor
Description
`GroovyPosixParser()`

## Method Summary

Modifier and Type
Method
Description
`protected void`
`burstToken(String token, boolean stopAtNonOption)`
Breaks `token` into its constituent parts using the following algorithm.
`protected String[]`
`flatten(org.apache.commons.cli.Options options, String[] arguments, boolean stopAtNonOption)`
An implementation of `Parser`'s abstract `flatten` method.

### Methods inherited from class org.apache.commons.cli.Parser

`checkRequiredOptions, getOptions, getRequiredOptions, parse, parse, parse, parse, processArgs, processOption, processProperties, setOptions`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### GroovyPosixParser

public GroovyPosixParser()

## Method Details

### flatten

protected String[] flatten(org.apache.commons.cli.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.

Specified by:
  `flatten` in class `org.apache.commons.cli.Parser`
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.

### burstToken

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.