| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- // package def_mut_txt -- изменяемая строка
- package def_mut_txt
- import (
- "fmt"
- "strconv"
- "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs/def_mut"
- "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 {
- *def_mut.Mut[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{
- Mut: def_mut.NewMut(_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.Mut.Set(sf.Mut.Get() + val)
- return sf.Mut.Get()
- }
- // TrimSuffix -- обрезает суффикс неизменяемого текста.
- func (sf *MTxt) TrimSuffix(suffix any) def_spec_base.ATxt {
- suf := fmt.Sprintf("%v", suffix)
- txt := def_spec_fn.TrimSuffix(sf.Mut.Get(), suf)
- return def_spec_base.ATxt(txt)
- }
- // Rune -- возвращает изменяемый внутренний текст в виде рун.
- func (sf MTxt) Rune() []rune {
- return []rune(sf.Mut.Get())
- }
- // Byte -- возвращает изменяемый внутренний текст в виде байтов.
- func (sf MTxt) Byte() []byte {
- return []byte(sf.Mut.Get())
- }
- // Len -- возвращает длину строки.
- func (sf MTxt) Len() def_spec_base.Int {
- return def_spec_base.Int(len(sf.Mut.Get()))
- }
- // String -- возвращает строку по требованию.
- func (sf MTxt) String() string {
- return string(sf.Mut.Get())
- }
- // 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.NewErr[def_spec_base.Int](err)
- }
- return result.NewOk(def_spec_base.Int(iRes))
- }
|