// package def_mut_txt -- изменяемая строка package def_mut_txt import ( "fmt" "strconv" "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs/def_let_txt" "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" ) // MTxt -- внутренней изменяемый текст. type MTxt struct { val def_spec_base.ATxt } // MutTxt -- создать новый внутрениий изменяемый текст. func MutTxt[T def_spec_fn.TxtConstraint](msg T, arg ...any) *MTxt { _txt := def_spec_fn.Sprintf(msg, arg...) sf := &MTxt{ val: _txt, } return sf } // Concat -- создать новый изменяемый текст. func (sf *MTxt) Concat(msg any, arg ...any) def_spec_base.ATxt { val := def_spec_fn.Sprintf("%v", msg) val = def_spec_fn.Sprintf(val, arg...) sf.val += val return sf.val } // TrimSuffix -- обрезает суффикс неизменяемого текста. func (sf *MTxt) TrimSuffix(suffix any) def_spec_base.ATxt { suf := fmt.Sprintf("%v", suffix) txt := def_spec_fn.TrimSuffix(sf.val, suf) return def_spec_base.ATxt(txt) } // Rune -- возвращает изменяемый внутренний текст в виде рун. func (sf MTxt) Rune() []rune { return []rune(sf.val) } // Byte -- возвращает изменяемый внутренний текст в виде байтов. func (sf MTxt) Byte() []byte { return []byte(sf.val) } // Len -- возвращает длину строки. func (sf MTxt) Len() def_spec_base.Int { return def_spec_base.Int(len(sf.val)) } // String -- возвращает строку по требованию. func (sf MTxt) String() string { return string(sf.val) } // Atoi -- возвращает возможное число. func (sf MTxt) Atoi() *result.Result[def_spec_base.Int] { 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.Int](err) } return result.ResOk(def_spec_base.Int(iRes)) } // Set -- изменение внутренней строки. func (sf *MTxt) Set(msg def_spec_base.ATxt) { sf.val = msg } // Get -- возвращает хранимое значение func (sf MTxt) Get() def_spec_base.ATxt { return sf.val } // Let -- возвращает неизменяемую копию себя func (sf *MTxt) Let() *def_let_txt.LTxt { val := sf.val return def_let_txt.LetTxt(val) }