gob/shell/command/flag/format.go

62 lines
910 B
Go
Raw Normal View History

2023-10-05 08:42:40 +00:00
package flag
func isShort(e string) bool {
re := []rune(e)
return e != "--" && len(re) == 2 && re[0] == '-'
}
func isLong(e string) bool {
return len(e) > 2 && e[:2] == "--"
}
func isCombined(e string) bool {
re := []rune(e)
return len(re) > 2 && re[0] != '-'
}
func isUnixFlag(e string) bool {
return isShort(e) || isLong(e)
}
func formatArg(e string) []string {
if isCombined(e) {
var out []string
for _, r := range e[1:] {
out = append(out, string([]rune{'-', r}))
}
return out
}
return []string{e}
}
func formatArgs(args []string) []string {
var (
out []string
ignore bool
)
for _, e := range args {
if ignore {
out = append(out, e)
} else {
ignore = e == "--"
out = append(out, formatArg(e)...)
}
}
return out
}
func containsUnixFlag(args []string) bool {
for _, arg := range args {
if isUnixFlag(arg) {
return true
}
}
return false
}