posh/pkg/cache/memorynamespace.go
Kevin Franklin Kim e2ad376b6c initial commit
2023-01-03 15:37:15 +01:00

35 lines
654 B
Go

package cache
import "github.com/c-bata/go-prompt"
type MemoryNamespace map[string]interface{}
func (c MemoryNamespace) Delete(key string) {
delete(c, key)
}
func (c MemoryNamespace) Get(key string, cb func() interface{}) interface{} {
if _, ok := c[key]; !ok {
if cb == nil {
return nil
}
c[key] = cb()
}
return c[key]
}
func (c MemoryNamespace) Keys() []string {
keys := make([]string, 0, len(c))
for k := range c {
keys = append(keys, k)
}
return keys
}
func (c MemoryNamespace) GetSuggests(key string, cb func() interface{}) []prompt.Suggest {
if v, ok := c.Get(key, cb).([]prompt.Suggest); ok {
return v
}
return nil
}