wtext.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. // package wtext -- WUI текст
  2. package wtext
  3. import (
  4. "strings"
  5. "sync"
  6. . "gitp78su.ipnodns.ru/svi/kern/v2/wui/wtypes"
  7. "gitp78su.ipnodns.ru/svi/kern/v2/wui/wwidget"
  8. )
  9. // WuiText -- текст для WUI
  10. type WuiText struct {
  11. IWuiWidget
  12. sync.RWMutex
  13. val string
  14. }
  15. // NewWuiText -- возвращает новый текст WUI
  16. func NewWuiText(val string) *WuiText {
  17. sf := &WuiText{
  18. IWuiWidget: wwidget.NewWuiWidget(),
  19. val: val,
  20. }
  21. _ = IWuiText(sf)
  22. return sf
  23. }
  24. const (
  25. strBeg = `<span id="{.id}">{.txt}</span>`
  26. )
  27. // Html -- возвращает HTML-представление текста
  28. func (sf *WuiText) Html() string {
  29. sf.RLock()
  30. defer sf.RUnlock()
  31. strRes := strings.ReplaceAll(strBeg, "{.id}", sf.Id())
  32. strRes = strings.ReplaceAll(strRes, "{.txt}", sf.val)
  33. return strRes
  34. }
  35. // Set -- устанавливает хранимое значение
  36. func (sf *WuiText) Set(val string) {
  37. sf.Lock()
  38. defer sf.Unlock()
  39. sf.val = val
  40. }
  41. // Get -- возвращает хранимое значение
  42. func (sf *WuiText) Get() string {
  43. sf.RLock()
  44. defer sf.RUnlock()
  45. return sf.val
  46. }