// package def_txt -- базовый тип текста package def_txt import ( "fmt" "strconv" "strings" "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs/def_spec" ) // KTxt -- алиас для внутренней строки. type KTxt struct { val def_spec.ATxt } // Txt -- создать новую строку. func Txt[T def_spec.TxtConstraint](msg T, arg ...any) *KTxt { _msg := def_spec.Sprintf(msg, arg...) sf := &KTxt{ val: _msg, } return sf } // TxtFix -- создать новую строку. func TxtFix[T def_spec.TxtConstraint](msg T, arg ...any) def_spec.ITxtFix { sf := Txt(msg, arg...) return sf } // TxtMut -- создать новую мутабельную строку. func TxtMut[T def_spec.TxtConstraint](msg T, arg ...any) def_spec.ITxtMut { _msg := def_spec.Sprintf(msg, arg...) sf := &KTxt{ val: _msg, } return sf } // Get -- возвращает внутреннюю строку. func (sf KTxt) Get() def_spec.ATxt { return sf.val } // Concat -- создать новую строку. func (sf *KTxt) Concat(msg any, arg ...any) def_spec.ITxtFix { val := def_spec.Sprintf("%v", msg) val = def_spec.Sprintf(val, arg...) sf.val += val return sf } // TrimSuffix -- обрезает суффикс строки. func (sf *KTxt) TrimSuffix(suffix any) def_spec.ITxtFix { suf := fmt.Sprintf("%v", suffix) txt := strings.TrimSuffix(string(sf.val), suf) return Txt(txt) } // Set -- изменение внутренней строки. func (sf *KTxt) Set(msg def_spec.ATxt) { sf.val = msg } // Rune -- возвращает внутреннюю строку в виде рун. func (sf KTxt) Rune() []rune { return []rune(sf.val) } // Byte -- возвращает внутреннюю строку в виде байтов. func (sf KTxt) Byte() []byte { return []byte(sf.val) } // Len -- возвращает длину строки. func (sf KTxt) Len() def_spec.Int { return def_spec.Int(len(sf.val)) } // String -- возвращает строку по требованию. func (sf KTxt) String() string { return string(sf.val) } // Atoi -- возвращает возможное число. func (sf KTxt) Atoi() *def_spec.Result[def_spec.Int] { iRes, err := strconv.Atoi(sf.String()) if err != nil { err := fmt.Errorf("KTxt.Atot(): val(%q) not Int, err=\n\t%w", sf.val, err) return def_spec.NewErr[def_spec.Int](err) } return def_spec.NewOk(def_spec.Int(iRes)) }