| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- // package def_txt -- внутренний текст.
- package def_txt
- import (
- "bytes"
- "fmt"
- "gitp78su.ipnodns.ru/svi/kern/v4/d0/defs/def_spec_base"
- "gitp78su.ipnodns.ru/svi/kern/v4/d0/defs/def_spec_fn"
- "gitp78su.ipnodns.ru/svi/kern/v4/d0/defs/table/owner"
- "gitp78su.ipnodns.ru/svi/kern/v4/d0/helpers"
- )
- // LTxt -- неизменяемый текст
- type LTxt struct {
- *owner.OwnerPass
- val *bytes.Buffer
- }
- // LetTxt -- создать новый внутренний неизменяемый текст.
- func LetTxt[T def_spec_fn.TxtConstraint](owner *owner.LOwner, msg T, arg ...any) *LTxt {
- helpers.If(owner == nil).Hassert("LetTxt(): LOwner == nil")
- _msg := def_spec_fn.Sprintf(msg, arg...)
- sf := <xt{
- OwnerPass: owner.Pass(),
- val: bytes.NewBufferString(string(_msg)),
- }
- return sf
- }
- // Byte -- возвращает внутренний текст в форме байтов.
- func (sf LTxt) Byte() []byte {
- sf.CheckOwner()
- return sf.val.Bytes()
- }
- // Rune -- возвращает внутренний текст в форме рун.
- func (sf LTxt) Rune() []rune {
- sf.CheckOwner()
- return []rune(sf.val.String())
- }
- // Len -- возвращает длину текста.
- func (sf LTxt) Len() def_spec_base.Num {
- sf.CheckOwner()
- return def_spec_base.Num(sf.val.Len())
- }
- // Get -- возвращает хранимое значение
- func (sf LTxt) Get() def_spec_base.Txt {
- sf.CheckOwner()
- return def_spec_base.Txt(sf.val.String())
- }
- // Str -- возвращает строковое представление
- func (sf LTxt) Str() string {
- sf.CheckOwner()
- return sf.val.String()
- }
- const (
- strOut = `LTxt(
- OwnerPass(%v)
- Val(%v)
- )`
- )
- // String -- возвращает строку по требованию.
- func (sf LTxt) String() string {
- sf.CheckOwner()
- return fmt.Sprintf(strOut, sf.OwnerPass, sf.val)
- }
|