23 lines
606 B
Go
23 lines
606 B
Go
|
// Copyright 2018 Frédéric Guillot. All rights reserved.
|
||
|
// Use of this source code is governed by the Apache 2.0
|
||
|
// license that can be found in the LICENSE file.
|
||
|
|
||
|
package template
|
||
|
|
||
|
import "fmt"
|
||
|
|
||
|
func dict(values ...interface{}) (map[string]interface{}, error) {
|
||
|
if len(values)%2 != 0 {
|
||
|
return nil, fmt.Errorf("Dict expects an even number of arguments")
|
||
|
}
|
||
|
dict := make(map[string]interface{}, len(values)/2)
|
||
|
for i := 0; i < len(values); i += 2 {
|
||
|
key, ok := values[i].(string)
|
||
|
if !ok {
|
||
|
return nil, fmt.Errorf("Dict keys must be strings")
|
||
|
}
|
||
|
dict[key] = values[i+1]
|
||
|
}
|
||
|
return dict, nil
|
||
|
}
|