| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- package def_bool
- import (
- "os"
- "strings"
- "gitp78su.ipnodns.ru/svi/kern/v4/d0/defs/def_err"
- "gitp78su.ipnodns.ru/svi/kern/v4/d0/defs/def_spec_base"
- "gitp78su.ipnodns.ru/svi/kern/v4/d0/defs/table/owner"
- "gitp78su.ipnodns.ru/svi/kern/v4/d0/result"
- )
- // MBool -- внутренне изменяемое булево.
- type MBool struct {
- *LBool
- }
- // MutBool -- возвращает новый внутренний изменяемый Bool.
- func MutBool[T def_spec_base.BoolConstraint](owner *owner.LOwner, val T) *MBool {
- sf := &MBool{
- LBool: LetBool(owner, val),
- }
- return sf
- }
- // Set -- устанавливает новое значение.
- func (sf *MBool) Set() {
- sf.CheckOwner()
- sf.val = true
- }
- // Reset -- сбрасывает новое значение.
- func (sf *MBool) Reset() {
- sf.CheckOwner()
- sf.val = false
- }
- // FromEnv -- получает значение из окружения.
- //
- // АХТУНГ!!!
- // Может быть небезопасно!!!
- func (sf *MBool) FromEnv(env def_spec_base.Txt) *result.Result[*LBool] {
- sf.CheckOwner()
- strVal := os.Getenv(string(env))
- if strVal == "" {
- err := def_err.LetErr(sf.Owner(), "MBool.FromEnv(): env(%v) not set", env)
- return result.ResErr[*LBool](err)
- }
- strVal = strings.ToLower(strVal)
- switch strVal {
- case "true", "yes", "y", "1":
- sf.val = true
- case "false", "no", "n", "0":
- sf.val = false
- default:
- err := def_err.LetErr(sf.Owner(),"MBool.FromEnv(): env(%v) not set", env)
- return result.ResErr[*LBool](err)
- }
- return result.ResOk(sf.Let())
- }
|