| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- // package def_txt -- базовый тип текста
- package def_txt
- import (
- "fmt"
- "strconv"
- "strings"
- "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs/def_spec"
- )
- // KTxt -- алиас для внутренней строки.
- type KTxt struct {
- val def_spec.ATxt
- }
- // Txt -- создать новую строку.
- func Txt[T def_spec.TxtConstraint](msg T, arg ...any) *KTxt {
- _msg := def_spec.Sprintf(msg, arg...)
- sf := &KTxt{
- val: _msg,
- }
- return sf
- }
- // TxtFix -- создать новую строку.
- func TxtFix[T def_spec.TxtConstraint](msg T, arg ...any) def_spec.ITxtFix {
- sf := Txt(msg, arg...)
- return sf
- }
- // TxtMut -- создать новую мутабельную строку.
- func TxtMut[T def_spec.TxtConstraint](msg T, arg ...any) def_spec.ITxtMut {
- _msg := def_spec.Sprintf(msg, arg...)
- sf := &KTxt{
- val: _msg,
- }
- return sf
- }
- // Get -- возвращает внутреннюю строку.
- func (sf KTxt) Get() def_spec.ATxt {
- return sf.val
- }
- // Concat -- создать новую строку.
- func (sf *KTxt) Concat(msg any, arg ...any) def_spec.ITxtFix {
- val := def_spec.Sprintf("%v", msg)
- val = def_spec.Sprintf(val, arg...)
- sf.val += val
- return sf
- }
- // TrimSuffix -- обрезает суффикс строки.
- func (sf *KTxt) TrimSuffix(suffix any) def_spec.ITxtFix {
- suf := fmt.Sprintf("%v", suffix)
- txt := strings.TrimSuffix(string(sf.val), suf)
- return Txt(txt)
- }
- // Set -- изменение внутренней строки.
- func (sf *KTxt) Set(msg def_spec.ATxt) {
- sf.val = msg
- }
- // Rune -- возвращает внутреннюю строку в виде рун.
- func (sf KTxt) Rune() []rune {
- return []rune(sf.val)
- }
- // Byte -- возвращает внутреннюю строку в виде байтов.
- func (sf KTxt) Byte() []byte {
- return []byte(sf.val)
- }
- // Len -- возвращает длину строки.
- func (sf KTxt) Len() def_spec.Int {
- return def_spec.Int(len(sf.val))
- }
- // String -- возвращает строку по требованию.
- func (sf KTxt) String() string {
- return string(sf.val)
- }
- // Atoi -- возвращает возможное число.
- func (sf KTxt) Atoi() *def_spec.Result[def_spec.Int] {
- iRes, err := strconv.Atoi(sf.String())
- if err != nil {
- err := fmt.Errorf("KTxt.Atot(): val(%q) not Int, err=\n\t%w",
- sf.val, err)
- return def_spec.NewErr[def_spec.Int](err)
- }
- return def_spec.NewOk(def_spec.Int(iRes))
- }
|