added string arrays and defaults

This commit is contained in:
vagrant 2014-03-03 16:50:17 +00:00
parent e1c7e3c0ca
commit e2371b2de5

View file

@ -8,6 +8,8 @@ import (
"sync"
"launchpad.net/goyaml"
"github.com/davecgh/go-spew/spew"
)
type Config struct {
@ -39,6 +41,27 @@ func GetString(key string) string {
return config.GetString(key)
}
func GetStringArray(key string) []string {
return config.GetStringArray(key)
}
func GetStringArrayDefault(key string,def []string) []string {
res,ok = config.GetStringArray(key)
if ! ok{
return def
}
return res
}
func GetStringDefault(key string, default_value string) string {
return config.GetStringDefault(key, default_value)
}
func GetIntDefault(key string, default_value int) int {
return config.GetIntDefault(key, default_value)
}
func NewConfig(filename string) *Config {
self := Config{}
self.config = make(map[string]interface{})
@ -62,9 +85,15 @@ func (self *Config) load() error {
}
data, err := ioutil.ReadFile(config_file)
if err != nil {
return errors.New("Problem with config file: " + err.Error())
}
goyaml.Unmarshal(data, self.config)
err=goyaml.Unmarshal(data, self.config)
if err != nil{
println(err.Error())
}
self.loaded = true
return nil
}
@ -94,6 +123,29 @@ func (self *Config) GetInt(key string) int {
}
return 0
}
func (self *Config) GetIntDefault(key string, default_value int) int {
value, ok := self.GetSafe(key)
if ok {
value_int, ok := value.(int)
if ok {
return value_int
}
}
return default_value
}
func (self *Config) GetStringDefault(key string, default_value string) string {
value, ok := self.GetSafe(key)
if ok {
value_string, ok := value.(string)
if ok {
return value_string
}
}
return default_value
}
func (self *Config) GetString(key string) string {
value, ok := self.GetSafe(key)
@ -105,3 +157,19 @@ func (self *Config) GetString(key string) string {
}
return ""
}
func (self *Config) GetStringArray(key string) ([]string,bool){
value, ok := self.GetSafe(key)
if ok {
var results []string
for _,v:= range value.([]interface{}){
results=append(results,v.(string))
}
return results
}
return []string{},ok
}