mirror of https://github.com/anoshenko/rui.git
50 lines
881 B
Go
50 lines
881 B
Go
|
package rui
|
||
|
|
||
|
import "sort"
|
||
|
|
||
|
// Params defines a type of a parameters list
|
||
|
type Params map[string]interface{}
|
||
|
|
||
|
func (params Params) Get(tag string) interface{} {
|
||
|
return params.getRaw(tag)
|
||
|
}
|
||
|
|
||
|
func (params Params) getRaw(tag string) interface{} {
|
||
|
if value, ok := params[tag]; ok {
|
||
|
return value
|
||
|
}
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func (params Params) Set(tag string, value interface{}) bool {
|
||
|
params.setRaw(tag, value)
|
||
|
return true
|
||
|
}
|
||
|
|
||
|
func (params Params) setRaw(tag string, value interface{}) {
|
||
|
if value != nil {
|
||
|
params[tag] = value
|
||
|
} else {
|
||
|
delete(params, tag)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func (params Params) Remove(tag string) {
|
||
|
delete(params, tag)
|
||
|
}
|
||
|
|
||
|
func (params Params) Clear() {
|
||
|
for tag := range params {
|
||
|
delete(params, tag)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func (params Params) AllTags() []string {
|
||
|
tags := make([]string, 0, len(params))
|
||
|
for t := range params {
|
||
|
tags = append(tags, t)
|
||
|
}
|
||
|
sort.Strings(tags)
|
||
|
return tags
|
||
|
}
|