mirror of
https://github.com/wavetermdev/waveterm.git
synced 2025-01-08 19:38:51 +01:00
47 lines
946 B
Go
47 lines
946 B
Go
// Copyright 2022 Dashborg Inc
|
|
//
|
|
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
// file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
|
|
package base
|
|
|
|
import "strings"
|
|
|
|
type OptsIter struct {
|
|
Pos int
|
|
Opts []string
|
|
}
|
|
|
|
func MakeOptsIter(opts []string) *OptsIter {
|
|
return &OptsIter{Opts: opts}
|
|
}
|
|
|
|
func IsOption(argStr string) bool {
|
|
return strings.HasPrefix(argStr, "-") && argStr != "-" && !strings.HasPrefix(argStr, "-/")
|
|
}
|
|
|
|
func (iter *OptsIter) HasNext() bool {
|
|
return iter.Pos <= len(iter.Opts)-1
|
|
}
|
|
|
|
func (iter *OptsIter) IsNextPlain() bool {
|
|
if !iter.HasNext() {
|
|
return false
|
|
}
|
|
return !IsOption(iter.Opts[iter.Pos])
|
|
}
|
|
|
|
func (iter *OptsIter) Next() string {
|
|
if iter.Pos >= len(iter.Opts) {
|
|
return ""
|
|
}
|
|
rtn := iter.Opts[iter.Pos]
|
|
iter.Pos++
|
|
return rtn
|
|
}
|
|
|
|
func (iter *OptsIter) Rest() []string {
|
|
return iter.Opts[iter.Pos:]
|
|
}
|