// package lev1 -- сборка уровня 1 package lev1 import ( "context" "fmt" . "gitp78su.ipnodns.ru/svi/kern/v4/lev0/ktypes" "gitp78su.ipnodns.ru/svi/kern/v4/lev1/helpers" "gitp78su.ipnodns.ru/svi/kern/v4/lev1/kint" "gitp78su.ipnodns.ru/svi/kern/v4/lev1/local_ctx" "gitp78su.ipnodns.ru/svi/kern/v4/lev1/log_buf" "gitp78su.ipnodns.ru/svi/kern/v4/lev1/mock_env" "gitp78su.ipnodns.ru/svi/kern/v4/lev1/option" "gitp78su.ipnodns.ru/svi/kern/v4/lev1/result" "gitp78su.ipnodns.ru/svi/kern/v4/lev1/safe_bool" "gitp78su.ipnodns.ru/svi/kern/v4/lev1/safe_bool_react" "gitp78su.ipnodns.ru/svi/kern/v4/lev1/safe_int" "gitp78su.ipnodns.ru/svi/kern/v4/lev1/safe_string" ) type IMockEnv = mock_env.IMockEnv // MakeEnv -- возвращает новое мок-окружение func MakeEnv() IMockEnv { sf := mock_env.MakeEnv() return sf } // OptionLogBuf -- опция для конфигурирования ILogBuf type OptionLogBuf = log_buf.OptionLogBuf // OptPrefix -- устанавливает префикс в сообщениях func OptPrefix(prefix string) OptionLogBuf { return log_buf.OptPrefix(prefix) } // OptIsTerm -- устанавливает признак вывода в терминал func OptIsTerm(isTerm bool) OptionLogBuf { return log_buf.OptIsTerm(isTerm) } // NewLogBuf -- возвращает новый буферизованный лог func NewLogBuf(opts ...log_buf.OptionLogBuf) ILogBuf { log := log_buf.NewLogBuf(opts...) return log } // NewSafeString -- возвращает новую потокобезопасную строку func NewSafeString() ISafeString { str := safe_string.NewSafeString() return str } // NewSafeIntFromStr -- возвращает новое потокобезопасное целое из строки func NewSafeIntFromStr(strVal string) IResult[ISafeInt] { return safe_int.NewSafeIntFromStr(strVal) } // NewSafeIntGetenv -- возвращает новое потокобезопасное целое из окружения func NewSafeIntGetenv(env string) IResult[ISafeInt] { return safe_int.NewSafeIntGetenv(env) } // NewSafeInt -- возвращает новую потокобезопасную целочисленную переменную func NewSafeInt(val int) ISafeInt { val_ := safe_int.NewSafeInt(val) return val_ } // NewSafeBoolReact -- возвращает новую потокобезопасную реактивную булеву переменную func NewSafeBoolReact() ISafeBoolReact { val := safe_bool_react.NewSafeBoolReact() return val } // NewSafeBool -- возвращает новый потокобезопасный булевый признак func NewSafeBool() ISafeBool { sb := safe_bool.NewSafeBool() return sb } // NewRes -- возвращает успешный Result с значением func NewRes[T any](res T) IResult[T] { return result.NewRes(res) } // NewErr -- возвращает Result с ошибкой func NewErr[T any](err error) IResult[T] { return result.NewErr[T](err) } // WrapErr -- оборачивает существующий Result с ошибкой с новой ошибкой func WrapErr[T any](res IResult[T], err error) IResult[T] { return result.WrapErr(res, err) } // NewOpt -- возвращает новый не пустой результат операции func NewOpt[T any](some T) IOption[T] { return option.NewOpt(some) } // NewNone -- возвращает новый пустой результат операции func NewNone[T any]() IOption[T] { return option.NewNone[T]() } // FnHassert -- проверяет с жёстким падением условие type FnHassert = helpers.FnHassert // Hassert -- возвращает ссылку на функцию Hassert func Hassert() FnHassert { return helpers.Hassert } // FnAssert -- проверка на правильность утверждения с падением в панику на локальном стенде (soft assert) type FnAssert = helpers.FnAssert // Assert -- возвращает ссылку на функцию Assert func Assert() FnAssert { return helpers.Assert } // SleepMs -- спит миллисекунду func SleepMs() { helpers.SleepMs() } // NewInt -- возвращает новую целочисленную переменную func NewInt(val int) Int { val_ := kint.NewInt(val) return val_ } // NewLocalCtx -- возвращает новый локальный контекст func NewLocalCtx(ctx context.Context) IResult[ILocalCtx] { resCtx := local_ctx.NewLocalCtx(ctx) if resCtx.IsErr() { err := fmt.Errorf("NewLocalCtx(): err=\n\t%w", resCtx.Err()) return NewErr[ILocalCtx](err) } return NewRes(ILocalCtx(resCtx.Val())) }