mirror of https://github.com/daffainfo/nuclei.git
38 lines
1.0 KiB
Go
38 lines
1.0 KiB
Go
package utils
|
|
|
|
type InsertionOrderedStringMap struct {
|
|
keys []string `yaml:"-"`
|
|
values map[string]string
|
|
}
|
|
|
|
func NewEmptyInsertionOrderedStringMap(size int) *InsertionOrderedStringMap {
|
|
return &InsertionOrderedStringMap{
|
|
keys: make([]string, 0, size),
|
|
values: make(map[string]string, size),
|
|
}
|
|
}
|
|
|
|
func NewInsertionOrderedStringMap(stringMap map[string]string) *InsertionOrderedStringMap {
|
|
result := NewEmptyInsertionOrderedStringMap(len(stringMap))
|
|
|
|
for k, v := range stringMap {
|
|
result.Set(k, v)
|
|
}
|
|
|
|
return result
|
|
}
|
|
|
|
func (insertionOrderedStringMap *InsertionOrderedStringMap) ForEach(fn func(key string, data string)) {
|
|
for _, key := range insertionOrderedStringMap.keys {
|
|
fn(key, insertionOrderedStringMap.values[key])
|
|
}
|
|
}
|
|
|
|
func (insertionOrderedStringMap *InsertionOrderedStringMap) Set(key string, value string) {
|
|
_, present := insertionOrderedStringMap.values[key]
|
|
insertionOrderedStringMap.values[key] = value
|
|
if !present {
|
|
insertionOrderedStringMap.keys = append(insertionOrderedStringMap.keys, key)
|
|
}
|
|
}
|