// package lev1 -- сборка уровня 1. package lev1 import ( "context" "fmt" "gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers" . "gitp78su.ipnodns.ru/svi/kern/v4/lev0/ktypes" "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())) }