| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- // package hx_vals -- атрибут HTMX (словарь значений).
- package hx_vals
- import (
- "encoding/json"
- "gitp78su.ipnodns.ru/svi/kern/v4/d0"
- "gitp78su.ipnodns.ru/svi/kern/v4/d0/defs"
- mKh "gitp78su.ipnodns.ru/svi/kern/v4/d0/helpers"
- mWt "gitp78su.ipnodns.ru/svi/kern/v4/d2/wui/wui_types"
- )
- // HxVals -- атрибут HTMX (словарь значений).
- type HxVals struct {
- *d0.MSafeMutex
- dict map[defs.Txt]any
- }
- // NewHxVals -- возвращает новый словарь значений.
- func NewHxVals() *HxVals {
- sf := &HxVals{
- MSafeMutex: d0.MutSafeMutex(),
- dict: map[defs.Txt]any{},
- }
- _ = mWt.IHxVals(sf)
- return sf
- }
- // Len -- возвращает размер словаря.
- func (sf *HxVals) Len() defs.Num {
- sf.RLock()
- defer sf.RUnlock()
- return defs.Num(len(sf.dict))
- }
- // Del -- удаляет ключ словаря.
- func (sf *HxVals) Del(key defs.Txt) {
- sf.Lock()
- defer sf.Unlock()
- delete(sf.dict, key)
- }
- // Clear -- очищает словарь значений.
- func (sf *HxVals) Clear() {
- sf.Lock()
- defer sf.Unlock()
- sf.dict = map[defs.Txt]any{}
- }
- // String -- возвращает строковое представление тэга.
- func (sf *HxVals) String() string {
- sf.RLock()
- defer sf.RUnlock()
- binJson, _ := json.Marshal(sf.dict)
- return `hx-vals='` + string(binJson) + `'`
- }
- // Get -- возвращает хранимое значение словарь значений.
- func (sf *HxVals) Get(key defs.Txt) any {
- sf.RLock()
- defer sf.RUnlock()
- return sf.dict[key]
- }
- // Set -- устанавливает значение словарь значений.
- func (sf *HxVals) Set(key defs.Txt, val any) {
- sf.Lock()
- defer sf.Unlock()
- mKh.If(key == "").Hassert("HxVals.Set(): key is empty")
- sf.dict[key] = val
- }
|