def_ltxt.go 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. // package def_txt -- внутренний текст.
  2. package def_txt
  3. import (
  4. "fmt"
  5. "strconv"
  6. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs/def_spec_base"
  7. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs/def_spec_fn"
  8. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/result"
  9. )
  10. // LTxt -- неизменяемый текст
  11. type LTxt struct {
  12. val def_spec_base.Txt
  13. }
  14. // LetTxt -- создать новый внутренний неизменяемый текст.
  15. func LetTxt[T def_spec_fn.TxtConstraint](msg T, arg ...any) *LTxt {
  16. _msg := def_spec_fn.Sprintf(msg, arg...)
  17. sf := &LTxt{
  18. val: _msg,
  19. }
  20. return sf
  21. }
  22. // Byte -- возвращает внутренний текст в форме байтов.
  23. func (sf LTxt) Byte() []byte {
  24. return []byte(sf.val)
  25. }
  26. // Rune -- возвращает внутренний текст в формк рун.
  27. func (sf LTxt) Rune() []rune {
  28. return []rune(sf.val)
  29. }
  30. // Len -- возвращает длину текста.
  31. func (sf LTxt) Len() def_spec_base.Num {
  32. return def_spec_base.Num(len(sf.val))
  33. }
  34. // Get -- возвращает хранимое значение
  35. func (sf LTxt) Get() def_spec_base.Txt {
  36. return sf.val
  37. }
  38. // Atoi -- возвращает возможное число.
  39. func (sf LTxt) Atoi() *result.Result[def_spec_base.Num] {
  40. iRes, err := strconv.Atoi(sf.String())
  41. if err != nil {
  42. err := fmt.Errorf("LetTxt.Atot(): val(%q) not Int, err=\n\t%w",
  43. sf.String(), err)
  44. return result.ResErr[def_spec_base.Num](err)
  45. }
  46. return result.ResOk(def_spec_base.Num(iRes))
  47. }
  48. // String -- возвращает строку по требованию.
  49. func (sf LTxt) String() string {
  50. return string(sf.val)
  51. }
  52. // TrimSuffix -- обрезает суффикс текста.
  53. func (sf LTxt) TrimSuffix(suffix any) def_spec_base.Txt {
  54. suf := fmt.Sprintf("%v", suffix)
  55. txt := def_spec_fn.TrimSuffix(sf.String(), suf)
  56. return txt
  57. }