config/config.go (26 lines of code) (raw):
package config
import "fmt"
type Configer interface {
Set(key, val string) error
Get(key string) (interface{}, error)
Int(key string) (int, error)
Int64(key string) (int64, error)
Bool(key string) (bool, error)
String(key string) (string, error)
Float64(key string) (float64, error)
RawData() []byte
}
type Config interface {
ParseFile(file string) (Configer, error)
}
var adapters = make(map[string]Config)
func Register(adapterName string, adapter Config) {
adapters[adapterName] = adapter
}
func NewConfig(adapterName, file string) (Configer, error) {
adapter, ok := adapters[adapterName]
if !ok {
return nil, fmt.Errorf("Config:%s not exist", adapterName)
}
return adapter.ParseFile(file)
}