lev1.go 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. // package lev1 -- сборка уровня 1
  2. package lev1
  3. import (
  4. "context"
  5. "fmt"
  6. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers"
  7. . "gitp78su.ipnodns.ru/svi/kern/v4/lev0/ktypes"
  8. "gitp78su.ipnodns.ru/svi/kern/v4/lev1/kint"
  9. "gitp78su.ipnodns.ru/svi/kern/v4/lev1/local_ctx"
  10. "gitp78su.ipnodns.ru/svi/kern/v4/lev1/log_buf"
  11. "gitp78su.ipnodns.ru/svi/kern/v4/lev1/mock_env"
  12. "gitp78su.ipnodns.ru/svi/kern/v4/lev1/option"
  13. "gitp78su.ipnodns.ru/svi/kern/v4/lev1/result"
  14. "gitp78su.ipnodns.ru/svi/kern/v4/lev1/safe_bool"
  15. "gitp78su.ipnodns.ru/svi/kern/v4/lev1/safe_bool_react"
  16. "gitp78su.ipnodns.ru/svi/kern/v4/lev1/safe_int"
  17. "gitp78su.ipnodns.ru/svi/kern/v4/lev1/safe_string"
  18. )
  19. type IMockEnv = mock_env.IMockEnv
  20. // MakeEnv -- возвращает новое мок-окружение
  21. func MakeEnv() IMockEnv {
  22. sf := mock_env.MakeEnv()
  23. return sf
  24. }
  25. // OptionLogBuf -- опция для конфигурирования ILogBuf
  26. type OptionLogBuf = log_buf.OptionLogBuf
  27. // OptPrefix -- устанавливает префикс в сообщениях
  28. func OptPrefix(prefix string) OptionLogBuf {
  29. return log_buf.OptPrefix(prefix)
  30. }
  31. // OptIsTerm -- устанавливает признак вывода в терминал
  32. func OptIsTerm(isTerm bool) OptionLogBuf {
  33. return log_buf.OptIsTerm(isTerm)
  34. }
  35. // NewLogBuf -- возвращает новый буферизованный лог
  36. func NewLogBuf(opts ...log_buf.OptionLogBuf) ILogBuf {
  37. log := log_buf.NewLogBuf(opts...)
  38. return log
  39. }
  40. // NewSafeString -- возвращает новую потокобезопасную строку
  41. func NewSafeString() ISafeString {
  42. str := safe_string.NewSafeString()
  43. return str
  44. }
  45. // NewSafeIntFromStr -- возвращает новое потокобезопасное целое из строки
  46. func NewSafeIntFromStr(strVal string) IResult[ISafeInt] {
  47. return safe_int.NewSafeIntFromStr(strVal)
  48. }
  49. // NewSafeIntGetenv -- возвращает новое потокобезопасное целое из окружения
  50. func NewSafeIntGetenv(env string) IResult[ISafeInt] {
  51. return safe_int.NewSafeIntGetenv(env)
  52. }
  53. // NewSafeInt -- возвращает новую потокобезопасную целочисленную переменную
  54. func NewSafeInt(val int) ISafeInt {
  55. val_ := safe_int.NewSafeInt(val)
  56. return val_
  57. }
  58. // NewSafeBoolReact -- возвращает новую потокобезопасную реактивную булеву переменную
  59. func NewSafeBoolReact() ISafeBoolReact {
  60. val := safe_bool_react.NewSafeBoolReact()
  61. return val
  62. }
  63. // NewSafeBool -- возвращает новый потокобезопасный булевый признак
  64. func NewSafeBool() ISafeBool {
  65. sb := safe_bool.NewSafeBool()
  66. return sb
  67. }
  68. // NewRes -- возвращает успешный Result с значением
  69. func NewRes[T any](res T) IResult[T] {
  70. return result.NewRes(res)
  71. }
  72. // NewErr -- возвращает Result с ошибкой
  73. func NewErr[T any](err error) IResult[T] {
  74. return result.NewErr[T](err)
  75. }
  76. // WrapErr -- оборачивает существующий Result с ошибкой с новой ошибкой
  77. func WrapErr[T any](res IResult[T], err error) IResult[T] {
  78. return result.WrapErr(res, err)
  79. }
  80. // NewOpt -- возвращает новый не пустой результат операции
  81. func NewOpt[T any](some T) IOption[T] {
  82. return option.NewOpt(some)
  83. }
  84. // NewNone -- возвращает новый пустой результат операции
  85. func NewNone[T any]() IOption[T] {
  86. return option.NewNone[T]()
  87. }
  88. // FnHassert -- проверяет с жёстким падением условие
  89. type FnHassert = helpers.FnHassert
  90. // Hassert -- возвращает ссылку на функцию Hassert
  91. func Hassert() FnHassert {
  92. return helpers.Hassert
  93. }
  94. // FnAssert -- проверка на правильность утверждения с падением в панику на локальном стенде (soft assert)
  95. type FnAssert = helpers.FnAssert
  96. // Assert -- возвращает ссылку на функцию Assert
  97. func Assert() FnAssert {
  98. return helpers.Assert
  99. }
  100. // SleepMs -- спит миллисекунду
  101. func SleepMs() {
  102. helpers.SleepMs()
  103. }
  104. // NewInt -- возвращает новую целочисленную переменную
  105. func NewInt(val int) Int {
  106. val_ := kint.NewInt(val)
  107. return val_
  108. }
  109. // NewLocalCtx -- возвращает новый локальный контекст
  110. func NewLocalCtx(ctx context.Context) IResult[ILocalCtx] {
  111. resCtx := local_ctx.NewLocalCtx(ctx)
  112. if resCtx.IsErr() {
  113. err := fmt.Errorf("NewLocalCtx(): err=\n\t%w", resCtx.Err())
  114. return NewErr[ILocalCtx](err)
  115. }
  116. return NewRes(ILocalCtx(resCtx.Val()))
  117. }