// package def_mut_time -- внутреннее изменяемое время package def_mut_time import ( "time" "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs/def_mut" "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs/def_let_err" "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs/def_spec_base" "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs/def_spec_fn" "gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers" "gitp78su.ipnodns.ru/svi/kern/v4/lev0/option" "gitp78su.ipnodns.ru/svi/kern/v4/lev0/tuf" ) // MTime -- внутренее изменяемое время. // // Вывод: "2006-01-02 15:04:05.000 -07 MST". type MTime struct { *def_mut.Mut[def_spec_base.Time] } // MutTime -- возвращает новое внутреннее изменяемое время. func MutTime[T def_spec_fn.TxtConstraint](val T) *MTime { helpers.If(val == "").Hassert("MutTime(): val is empty") sf := &MTime{ Mut: def_mut.NewMut(def_spec_base.Time(val)), } return sf } // MutTimeAuto -- возвращает новое автоматическое внутреннее изменяемое время. // // Вывод: "2006-01-02 15:04:05.000 -07 MST". func MutTimeAuto() *MTime { _val := time.Now().Local().Format("2006-01-02 15:04:05.000 -07 MST") val := def_spec_base.Time(_val) sf := &MTime{ Mut: def_mut.NewMut(val), } return sf } // MutTimeFromTuf -- десериализует из def_spec_base.ATxt в строки. func MutTimeFromTuf(txtMsg def_spec_base.ATxt) *option.Option[*def_let_err.LErr] { resRec := tuf.RecFromTuf("ETime", txtMsg) // Получить текст записи if resRec.IsErr() { err := def_let_err.LetErr("MutTimeFromTuf(): in extract record from TUF, err=\n\t%v", resRec.Error()) return option.NewSome(err) } return option.NewNone[*def_let_err.LErr]() } // Get -- получить время. // // Вывод: "2006-01-02 15:04:05.000 -07 MST". func (sf *MTime) Get() def_spec_base.Time { return def_spec_base.Time(sf.Mut.Get()) } // ToTuf -- сериализует себя в строку. func (sf *MTime) ToTuf() def_spec_base.ATxt { txtRes := tuf.StrToTuf("val", def_spec_base.ATxt(sf.Mut.Get())) lenVal:=len(string(sf.Mut.Get())) isFill:=def_spec_base.Bool(lenVal>0) txtRes += tuf.BoolToTuf("isFill", isFill) txtRes = tuf.RecToTuf("MTime", txtRes) return txtRes } // Set -- устанавливает типизированное значение. func (sf *MTime) Set(val def_spec_base.Time) { helpers.If(val == "").Hassert("MTime.Set(): val is empty") sf.Mut.Set(val) } // String -- возвращает строку. func (sf *MTime) String() string { return string(sf.Mut.Get()) }