| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- 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"
- )
- // MTxt -- внутренней изменяемый текст.
- type MTxt struct {
- LTxt
- }
- // MutTxt -- создать новый внутрениий изменяемый текст.
- func MutTxt[T def_spec_fn.TxtConstraint](msg T, arg ...any) *MTxt {
- sf := &MTxt{
- LTxt: *LetTxt(msg, arg...),
- }
- return sf
- }
- // Concat -- создать новый изменяемый текст.
- func (sf *MTxt) Concat(msg any, arg ...any) def_spec_base.Txt {
- 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[T def_spec_fn.TxtConstraint](suffix T) def_spec_base.Txt {
- suf := fmt.Sprintf("%v", suffix)
- txt := def_spec_fn.TrimSuffix(sf.val, suf)
- sf.val = txt
- return sf.val
- }
- // Atoi -- устанавливает и возвращает возможное число.
- func (sf MTxt) 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)
- }
- sf.val = def_spec_fn.Sprintf("%v", iRes)
- return result.ResOk(def_spec_base.Num(iRes))
- }
- // Set -- изменение внутренней строки.
- func (sf *MTxt) Set[T def_spec_fn.TxtConstraint](msg T, arg ...any) {
- _msg := def_spec_fn.Sprintf(msg, arg...)
- sf.val = _msg
- }
- // Let -- возвращает неизменяемую копию себя
- func (sf *MTxt) Let() *LTxt {
- return LetTxt(sf.val)
- }
|