Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type FlagResult ¶
type FlagResult struct {
Args []string
NormalizedKey string
OriginalKey string
Values []string
Joined bool
}
FlagResult is a result of Scanner's Next operation
type PrefixOption ¶
PrefixOption is option for joined flags.
type Scanner ¶
type Scanner struct {
// Args is remaining arguments.
Args []string
// Flags are map keyed by -flag and number of argments for the flag.
// The flag requires additional value from args if value > 0.
// The flag doesn't require additional value from args if value == 0
Flags map[string]int
// Joined are prefixes of flag that has value in the same arg.
// sorted Prefixes by reverse lexicographic order.
Joined []PrefixOption
// flag normalization.
Normalized map[string]string
// PrevResult is the previous Flag Result that has been handled.
PrevResult FlagResult
// CurResult is the current Flag Result being processed.
CurResult FlagResult
}
Scanner scans command line arguments. it scans args and gets (flag, args, value) in each Next call.
for `-flagname`, it is recognized as flag by default, and it returns ("-flagname", ["-flagname"], nil).
for `-flagnameflagvalue`, need to set "-flagname" in joined, and it returns ("-flagname", ["-flagnameflagvalue"], ["flagvalue"]).
for `-flagname flagvalue`, need to set flags["-flagname"] = 1, and it returns ("-flagname", ["-flagname", "flagvalue"], ["flagvalue"]).
for non-flag "parameter", it returns ("", ["parameter"], nil).
if "-flagname" is used for both `-flagnameflagvalue`, `-flagname flagvalue`, need to set it both in joined and flags.
to accept "/flagname", need to use "/flagname" for flags, joined.
for `--flagname`, need to use "--flagname" for flags, joined.
func (*Scanner) Next ¶
Next returns next flag. flag is normalized flag, empty string if not started with "-". args are consumed arguments. values are flag value if flag needs value (next arg in args) or joined (rest after prefix in the arg).
func (*Scanner) ReadNextFlag ¶
func (s *Scanner) ReadNextFlag() *FlagResult
ReadNextFlag moves forward the current FlagResult, update the scanner's PrevResult, and CurResult fields, and return the CurResult. NormalizedKey is normalized flag, or empty string if not started with "-". OriginalKey is a key before the normalization Args are consumed arguments. Values are flag value if flag needs value (next arg in args) or Joined (rest after prefix in the arg).