// package def_spec_fn -- набор функций базовых спецификаций package def_spec_fn import ( "fmt" "strconv" "strings" "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs/def_spec_base" "gitp78su.ipnodns.ru/svi/kern/v4/lev0/result" ) // Int -- алиас для int. type Int = def_spec_base.Int // Bool -- внутренее представление логического значения. type Bool = def_spec_base.Bool // ATxt -- алиас для внутренней строки. type ATxt = def_spec_base.ATxt // IString -- интерфейс к стандартной строке. type IString interface { // String -- возвращает стандартную строку String() string } // TxtConstraint -- разрешает строки и любые типы на его основе (например, ATxt). type TxtConstraint interface { ~string } // Sprintf -- форматирует строку с помощью fmt.Sprintf. func Sprintf[T TxtConstraint](txt T, args ...interface{}) ATxt { return ATxt(fmt.Sprintf(string(txt), args...)) } // TrifSuffix -- обрезает суффикс строки func TrimSuffix[T TxtConstraint](txt T, suffix any) ATxt { suf := fmt.Sprintf("%v", suffix) _txt := strings.TrimSuffix(string(txt), suf) return ATxt(_txt) } // Atoi -- возвращает возможное число. func Atoi[T TxtConstraint](txt T) *result.Result[Int] { iRes, err := strconv.Atoi(string(txt)) if err != nil { err := fmt.Errorf("LetTxt.Atot(): val(%q) not Int, err=\n\t%w", txt, err) return result.NewErr[Int](err) } return result.NewOk(Int(iRes)) }