// package def_txt -- внутренний текст. package def_txt import ( "fmt" "strconv" "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs/def_spec_base" "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs/def_spec_fn" "gitp78su.ipnodns.ru/svi/kern/v4/lev0/result" ) // LTxt -- неизменяемый текст type LTxt struct { val def_spec_base.Txt } // LetTxt -- создать новый внутренний неизменяемый текст. func LetTxt[T def_spec_fn.TxtConstraint](msg T, arg ...any) *LTxt { _msg := def_spec_fn.Sprintf(msg, arg...) sf := <xt{ val: _msg, } return sf } // Byte -- возвращает внутренний текст в форме байтов. func (sf LTxt) Byte() []byte { return []byte(sf.val) } // Rune -- возвращает внутренний текст в формк рун. func (sf LTxt) Rune() []rune { return []rune(sf.val) } // Len -- возвращает длину текста. func (sf LTxt) Len() def_spec_base.Num { return def_spec_base.Num(len(sf.val)) } // Get -- возвращает хранимое значение func (sf LTxt) Get() def_spec_base.Txt { return sf.val } // Atoi -- возвращает возможное число. func (sf LTxt) Atoi() *result.Result[def_spec_base.Num] { iRes, err := strconv.Atoi(sf.String()) if err != nil { err := fmt.Errorf("LetTxt.Atot(): val(%q) not Int, err=\n\t%w", sf.String(), err) return result.ResErr[def_spec_base.Num](err) } return result.ResOk(def_spec_base.Num(iRes)) } // String -- возвращает строку по требованию. func (sf LTxt) String() string { return string(sf.val) } // TrimSuffix -- обрезает суффикс текста. func (sf LTxt) TrimSuffix(suffix any) def_spec_base.Txt { suf := fmt.Sprintf("%v", suffix) txt := def_spec_fn.TrimSuffix(sf.String(), suf) return txt }