1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/gookit-gcli

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
type_vars.go 2.5 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
inhere Отправлено 20.04.2021 17:48 1ef474c
package gcli
import (
"fmt"
"strconv"
"github.com/gookit/goutil/strutil"
)
/*************************************************************************
* options: some special flag vars
* - implemented flag.Value interface
*************************************************************************/
// Ints The int flag list, implemented flag.Value interface
type Ints []int
// String to string
func (s *Ints) String() string {
return fmt.Sprintf("%v", *s)
}
// Set new value
func (s *Ints) Set(value string) error {
intVal, err := strconv.Atoi(value)
if err == nil {
*s = append(*s, intVal)
}
return err
}
// Strings The string flag list, implemented flag.Value interface
type Strings []string
// String to string
func (s *Strings) String() string {
return fmt.Sprintf("%v", *s)
}
// Set new value
func (s *Strings) Set(value string) error {
*s = append(*s, value)
return nil
}
// Booleans The bool flag list, implemented flag.Value interface
type Booleans []bool
// String to string
func (s *Booleans) String() string {
return fmt.Sprintf("%v", *s)
}
// Set new value
func (s *Booleans) Set(value string) error {
boolVal, err := strconv.ParseBool(value)
if err == nil {
*s = append(*s, boolVal)
}
return err
}
// EnumString The string flag list, implemented flag.Value interface
type EnumString struct {
val string
enum []string
}
// String to string
func (s *EnumString) String() string {
return s.val
}
// SetEnum values
func (s *EnumString) SetEnum(enum []string) {
s.enum = enum
}
// Set new value, will check value is right
func (s *EnumString) Set(value string) error {
var ok bool
for _, item := range s.enum {
if value == item {
ok = true
break
}
}
if !ok {
return fmt.Errorf("value must one of the: %v", s.enum)
}
return nil
}
// String type, an special string
//
// Usage:
// // case 1:
// var names gcli.String
// c.VarOpt(&names, "names", "", "multi name by comma split")
//
// --names "tom,john,joy"
// names.Split(",") -> []string{"tom","john","joy"}
//
// // case 2:
// var ids gcli.String
// c.VarOpt(&ids, "ids", "", "multi id by comma split")
//
// --names "23,34,56"
// names.Ints(",") -> []int{23,34,56}
type String string
// Set value
func (s *String) Set(val string) error {
*s = String(val)
return nil
}
// String to string
func (s String) String() string {
return string(s)
}
// Split value to []string
func (s String) Split(sep string) []string {
return strutil.ToStrings(string(s), sep)
}
// Ints value to []int
func (s String) Ints(sep string) []int {
return strutil.Ints(string(s), sep)
}

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/gookit-gcli.git
git@api.gitlife.ru:oschina-mirror/gookit-gcli.git
oschina-mirror
gookit-gcli
gookit-gcli
master