|
|
@@ -5,32 +5,35 @@ import (
|
|
|
"os"
|
|
|
"sync"
|
|
|
|
|
|
- "gitp78su.ipnodns.ru/svi/kern/v4/lev0"
|
|
|
+ "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs/def_err"
|
|
|
+ "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs/def_spec_base"
|
|
|
+ "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs/def_txt"
|
|
|
+ "gitp78su.ipnodns.ru/svi/kern/v4/lev0/result"
|
|
|
)
|
|
|
|
|
|
// MSafeTxt -- потокобезопасный внутренний текст.
|
|
|
type MSafeTxt struct {
|
|
|
sync.RWMutex
|
|
|
- val *lev0.MTxt
|
|
|
+ val *def_txt.MTxt
|
|
|
}
|
|
|
|
|
|
// MutSafeTxt -- возвращает новую потокобезопасный внутренний текст.
|
|
|
-func MutSafeTxt[T lev0.TxtConstraint](txt T, arg ...any) *MSafeTxt {
|
|
|
+func MutSafeTxt[T def_spec_base.TxtConstraint](txt T, arg ...any) *MSafeTxt {
|
|
|
sf := &MSafeTxt{
|
|
|
- val: lev0.MutTxt(txt, arg...),
|
|
|
+ val: def_txt.MutTxt(txt, arg...),
|
|
|
}
|
|
|
return sf
|
|
|
}
|
|
|
|
|
|
// MutSafeTxtFromEnv -- возвращает новую потокобезопасный внутрений текст из окружения.
|
|
|
-func MutSafeTxtFromEnv(env *lev0.LTxt) *lev0.Result[*MSafeTxt] {
|
|
|
+func MutSafeTxtFromEnv(env *def_txt.LTxt) *result.Result[*MSafeTxt] {
|
|
|
sf := MutSafeTxt("")
|
|
|
res := sf.FromEnv(env)
|
|
|
if res.IsErr() {
|
|
|
- err := lev0.LetErr("NewSafeStringGetenv(): in get from env(%v), err=\n\t%w", env, res.Err())
|
|
|
- return lev0.ResErr[*MSafeTxt](err)
|
|
|
+ err := def_err.LetErr("NewSafeStringGetenv(): in get from env(%v), err=\n\t%w", env, res.Err())
|
|
|
+ return result.ResErr[*MSafeTxt](err)
|
|
|
}
|
|
|
- return lev0.ResOk(sf)
|
|
|
+ return result.ResOk(sf)
|
|
|
}
|
|
|
|
|
|
// Byte -- возвращает байтовое представление текста.
|
|
|
@@ -41,20 +44,20 @@ func (sf *MSafeTxt) Byte() []byte {
|
|
|
}
|
|
|
|
|
|
// Get -- возвращает хранимый текст.
|
|
|
-func (sf *MSafeTxt) Get() *lev0.LTxt {
|
|
|
+func (sf *MSafeTxt) Get() *def_txt.LTxt {
|
|
|
sf.RLock()
|
|
|
defer sf.RUnlock()
|
|
|
return sf.val.Let()
|
|
|
}
|
|
|
|
|
|
// Set -- устанавливает текст.
|
|
|
-func (sf *MSafeTxt) Set(val *lev0.LTxt) {
|
|
|
+func (sf *MSafeTxt) Set(val *def_txt.LTxt) {
|
|
|
sf.Lock()
|
|
|
defer sf.Unlock()
|
|
|
sf.val.Set(val.Get())
|
|
|
}
|
|
|
|
|
|
-// Reset -- сбрасывает ьекст.
|
|
|
+// Reset -- сбрасывает текст.
|
|
|
func (sf *MSafeTxt) Reset() {
|
|
|
sf.Lock()
|
|
|
defer sf.Unlock()
|
|
|
@@ -62,17 +65,21 @@ func (sf *MSafeTxt) Reset() {
|
|
|
}
|
|
|
|
|
|
// FromEnv -- получает значение из окружения.
|
|
|
-func (sf *MSafeTxt) FromEnv(env *lev0.LTxt) *lev0.Result[*lev0.LTxt] {
|
|
|
- txtVal := lev0.ATxt(os.Getenv(env.String()))
|
|
|
+func (sf *MSafeTxt) FromEnv(env *def_txt.LTxt) *result.Result[*def_txt.LTxt] {
|
|
|
+ sf.Lock()
|
|
|
+ defer sf.Unlock()
|
|
|
+ txtVal := def_spec_base.Txt(os.Getenv(env.String()))
|
|
|
if txtVal == "" {
|
|
|
- err := lev0.LetErr("safeString.Getenv(): from env(%v), val is empty", env)
|
|
|
- return lev0.ResErr[*lev0.LTxt](err)
|
|
|
+ err := def_err.LetErr("safeString.Getenv(): from env(%v), val is empty", env)
|
|
|
+ return result.ResErr[*def_txt.LTxt](err)
|
|
|
}
|
|
|
- sf.val = lev0.MutTxt(txtVal)
|
|
|
- return lev0.ResOk(sf.val.Let())
|
|
|
+ sf.val = def_txt.MutTxt(txtVal)
|
|
|
+ return result.ResOk(sf.val.Let())
|
|
|
}
|
|
|
|
|
|
// TrimSuffix -- обрезает суффикс хранимаого текста
|
|
|
-func (sf *MSafeTxt) TrimSuffix(txt lev0.ATxt) lev0.ATxt {
|
|
|
+func (sf *MSafeTxt) TrimSuffix(txt def_spec_base.Txt) def_spec_base.Txt {
|
|
|
+ sf.Lock()
|
|
|
+ defer sf.Unlock()
|
|
|
return sf.val.TrimSuffix(txt)
|
|
|
}
|