arch_text.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. // package arch_text -- архитектурный текст
  2. package arch_text
  3. import (
  4. "fmt"
  5. "gitp78su.ipnodns.ru/svi/kern/v3/krn/ktypes"
  6. "gitp78su.ipnodns.ru/svi/goarch/lev0/alias"
  7. "gitp78su.ipnodns.ru/svi/goarch/lev0/types"
  8. "gitp78su.ipnodns.ru/svi/goarch/lev1/arch_node"
  9. )
  10. // ArchText -- архитектурный текст
  11. type ArchText struct {
  12. *arch_node.ArchNode
  13. Text_ alias.ArchText `yaml:"text"` // Значение текста
  14. }
  15. // NewArchText -- возвращает новый архитектурный текст
  16. func NewArchText(text alias.ArchText, parentId alias.ArchId) ktypes.Result[*ArchText] {
  17. sf := &ArchText{
  18. ArchNode: arch_node.NewArchNode("arch_text", parentId),
  19. Text_: text,
  20. }
  21. someErr := sf.InvarCheck()
  22. if someErr.IsVal() {
  23. return ktypes.NewErr[*ArchText](someErr.Val())
  24. }
  25. _ = types.IArchText(sf)
  26. return ktypes.NewOk(sf)
  27. }
  28. // InvarCheck -- проверка инвариантов
  29. func (sf *ArchText) InvarCheck() ktypes.Option[error] {
  30. if sf.ArchNode == nil {
  31. err := fmt.Errorf("ArchText.InvarCheck(): ArchNode==nil")
  32. return ktypes.NewSome(err)
  33. }
  34. return ktypes.NewNone[error]()
  35. }
  36. // String -- возвращает метку
  37. //
  38. //go:fix inline
  39. func (sf *ArchText) String() string {
  40. return string(sf.Text_)
  41. }
  42. // Get -- возвращает метку
  43. //
  44. //go:fix inline
  45. func (sf *ArchText) Get() alias.ArchText {
  46. return sf.Text_
  47. }