| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- // 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.Num
- // Bool -- внутренее представление логического значения.
- type Bool = def_spec_base.Bool
- // ATxt -- алиас для внутренней строки.
- type ATxt = def_spec_base.Txt
- // TxtConstraint -- разрешает строки и любые типы на его основе (например, ATxt).
- type TxtConstraint = def_spec_base.TxtConstraint
- // 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))
- }
|