blob: f0779d54f40e34127e3336decc9681fe34900b86 [file]
// TOML interface.
package toml
import (
"strings"
)
// Definition of a tomlTree
type tomlTree map[string]interface{}
// Retrieve an element from the tree.
//
// If the path described by the key does not exist, nil is returned.
func (t *tomlTree) Get(key string) interface{} {
subtree := t
keys := strings.Split(key, ".")
for _, intermediate_key := range keys[:len(keys)-1] {
_, exists := (*subtree)[intermediate_key]
if !exists {
return nil
}
subtree = (*subtree)[intermediate_key].(*tomlTree)
}
return (*subtree)[keys[len(keys) - 1]]
}
// Set an element in the tree.
//
// Creates all necessary intermediates trees, if needed.
func (t *tomlTree) Set(key string, value interface{}) {
subtree := t
keys := strings.Split(key, ".")
for _, intermediate_key := range keys[:len(keys)-1] {
_, exists := (*subtree)[intermediate_key]
if !exists {
(*subtree)[intermediate_key] = make(tomlTree)
}
subtree = (*subtree)[intermediate_key].(*tomlTree)
}
(*subtree)[keys[len(key) - 1]] = value
}
func Load() tomlTree {
result := make(tomlTree)
return result
}