separate options

This commit is contained in:
2020-10-25 12:40:40 +03:00
parent 365fc32888
commit 1c7e9623ce
43 changed files with 510 additions and 493 deletions

97
input/flag/flag.go Normal file
View File

@@ -0,0 +1,97 @@
package flag
//go:generate stringer -type=Flag -linecomment
type Flag int
const (
String Flag = 0 // string
Required Flag = 1 << iota // required
Array // array
Int // int
Int64 // int64
Uint // uint
Uint64 // uint64
Float64 // float64
Bool // bool
Duration // duration
Time // time
Any // any
)
func (f Flag) With(v Flag) Flag {
return f | v
}
func (f Flag) IsString() bool {
return f|Required|Array^Required^Array == 0
}
func (f Flag) IsRequired() bool {
return f&Required > 0
}
func (f Flag) IsArray() bool {
return f&Array > 0
}
func (f Flag) IsInt() bool {
return f&Int > 0
}
func (f Flag) IsInt64() bool {
return f&Int64 > 0
}
func (f Flag) IsUint() bool {
return f&Uint > 0
}
func (f Flag) IsUint64() bool {
return f&Uint64 > 0
}
func (f Flag) IsFloat64() bool {
return f&Float64 > 0
}
func (f Flag) IsBool() bool {
return f&Bool > 0
}
func (f Flag) IsDuration() bool {
return f&Duration > 0
}
func (f Flag) IsTime() bool {
return f&Time > 0
}
func (f Flag) IsAny() bool {
return f&Any > 0
}
func (f Flag) Type() Flag {
switch {
case f.IsInt():
return Int
case f.IsInt64():
return Int64
case f.IsUint():
return Uint
case f.IsUint64():
return Uint64
case f.IsFloat64():
return Float64
case f.IsBool():
return Bool
case f.IsDuration():
return Duration
case f.IsTime():
return Time
case f.IsAny():
return Any
default:
return String
}
}

47
input/flag/flag_string.go Normal file
View File

@@ -0,0 +1,47 @@
// Code generated by "stringer -type=Flag -linecomment"; DO NOT EDIT.
package flag
import "strconv"
func _() {
// An "invalid array index" compiler error signifies that the constant values have changed.
// Re-run the stringer command to generate them again.
var x [1]struct{}
_ = x[String-0]
_ = x[Required-2]
_ = x[Array-4]
_ = x[Int-8]
_ = x[Int64-16]
_ = x[Uint-32]
_ = x[Uint64-64]
_ = x[Float64-128]
_ = x[Bool-256]
_ = x[Duration-512]
_ = x[Time-1024]
_ = x[Any-2048]
}
const _Flag_name = "stringrequiredarrayintint64uintuint64float64booldurationtimeany"
var _Flag_map = map[Flag]string{
0: _Flag_name[0:6],
2: _Flag_name[6:14],
4: _Flag_name[14:19],
8: _Flag_name[19:22],
16: _Flag_name[22:27],
32: _Flag_name[27:31],
64: _Flag_name[31:37],
128: _Flag_name[37:44],
256: _Flag_name[44:48],
512: _Flag_name[48:56],
1024: _Flag_name[56:60],
2048: _Flag_name[60:63],
}
func (i Flag) String() string {
if str, ok := _Flag_map[i]; ok {
return str
}
return "Flag(" + strconv.FormatInt(int64(i), 10) + ")"
}