| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- // 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 ...any) 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.ResErr[Int](err)
- }
- return result.ResOk(Int(iRes))
- }
|