mirror of
https://github.com/astaxie/beego.git
synced 2024-11-26 13:51:28 +00:00
commit
ae8bb8ce82
@ -151,13 +151,13 @@ func (c *JsonConfigContainer) getData(key string) interface{} {
|
|||||||
}
|
}
|
||||||
for _, key := range sectionKey[1:] {
|
for _, key := range sectionKey[1:] {
|
||||||
if v, ok := curValue.(map[string]interface{}); ok {
|
if v, ok := curValue.(map[string]interface{}); ok {
|
||||||
if v2, ok := v[key]; ok {
|
if curValue, ok = v[key]; !ok {
|
||||||
return v2
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return curValue
|
||||||
|
}
|
||||||
if v, ok := c.data[key]; ok {
|
if v, ok := c.data[key]; ok {
|
||||||
return v
|
return v
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
// @license http://github.com/astaxie/beego/blob/master/LICENSE
|
// @license http://github.com/astaxie/beego/blob/master/LICENSE
|
||||||
//
|
//
|
||||||
// @authors astaxie
|
// @authors astaxie
|
||||||
package config
|
package xml
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
@ -24,27 +24,27 @@ import (
|
|||||||
// XmlConfig is a xml config parser and implements Config interface.
|
// XmlConfig is a xml config parser and implements Config interface.
|
||||||
// xml configurations should be included in <config></config> tag.
|
// xml configurations should be included in <config></config> tag.
|
||||||
// only support key/value pair as <key>value</key> as each item.
|
// only support key/value pair as <key>value</key> as each item.
|
||||||
type XMLConfig struct {
|
type XMLConfig struct{}
|
||||||
}
|
|
||||||
|
|
||||||
// Parse returns a ConfigContainer with parsed xml config map.
|
// Parse returns a ConfigContainer with parsed xml config map.
|
||||||
func (xmls *XMLConfig) Parse(filename string) (config.ConfigContainer, error) {
|
func (xc *XMLConfig) Parse(filename string) (config.ConfigContainer, error) {
|
||||||
file, err := os.Open(filename)
|
file, err := os.Open(filename)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
defer file.Close()
|
defer file.Close()
|
||||||
x := &XMLConfigContainer{
|
|
||||||
data: make(map[string]interface{}),
|
x := &XMLConfigContainer{data: make(map[string]interface{})}
|
||||||
}
|
|
||||||
content, err := ioutil.ReadAll(file)
|
content, err := ioutil.ReadAll(file)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
d, err := x2j.DocToMap(string(content))
|
d, err := x2j.DocToMap(string(content))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
x.data = d["config"].(map[string]interface{})
|
x.data = d["config"].(map[string]interface{})
|
||||||
return x, nil
|
return x, nil
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
// @license http://github.com/astaxie/beego/blob/master/LICENSE
|
// @license http://github.com/astaxie/beego/blob/master/LICENSE
|
||||||
//
|
//
|
||||||
// @authors astaxie
|
// @authors astaxie
|
||||||
package config
|
package xml
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"os"
|
"os"
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
// @license http://github.com/astaxie/beego/blob/master/LICENSE
|
// @license http://github.com/astaxie/beego/blob/master/LICENSE
|
||||||
//
|
//
|
||||||
// @authors astaxie
|
// @authors astaxie
|
||||||
package config
|
package yaml
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
@ -24,39 +24,36 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// YAMLConfig is a yaml config parser and implements Config interface.
|
// YAMLConfig is a yaml config parser and implements Config interface.
|
||||||
type YAMLConfig struct {
|
type YAMLConfig struct{}
|
||||||
}
|
|
||||||
|
|
||||||
// Parse returns a ConfigContainer with parsed yaml config map.
|
// Parse returns a ConfigContainer with parsed yaml config map.
|
||||||
func (yaml *YAMLConfig) Parse(filename string) (config.ConfigContainer, error) {
|
func (yaml *YAMLConfig) Parse(filename string) (y config.ConfigContainer, err error) {
|
||||||
y := &YAMLConfigContainer{
|
|
||||||
data: make(map[string]interface{}),
|
|
||||||
}
|
|
||||||
cnf, err := ReadYmlReader(filename)
|
cnf, err := ReadYmlReader(filename)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return
|
||||||
}
|
}
|
||||||
y.data = cnf
|
y = &YAMLConfigContainer{
|
||||||
return y, nil
|
data: cnf,
|
||||||
|
}
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Read yaml file to map.
|
// Read yaml file to map.
|
||||||
// if json like, use json package, unless goyaml2 package.
|
// if json like, use json package, unless goyaml2 package.
|
||||||
func ReadYmlReader(path string) (cnf map[string]interface{}, err error) {
|
func ReadYmlReader(path string) (cnf map[string]interface{}, err error) {
|
||||||
err = nil
|
|
||||||
f, err := os.Open(path)
|
f, err := os.Open(path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
defer f.Close()
|
defer f.Close()
|
||||||
err = nil
|
|
||||||
buf, err := ioutil.ReadAll(f)
|
buf, err := ioutil.ReadAll(f)
|
||||||
if err != nil || len(buf) < 3 {
|
if err != nil || len(buf) < 3 {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if string(buf[0:1]) == "{" {
|
if string(buf[0:1]) == "{" {
|
||||||
log.Println("Look lile a Json, try it")
|
log.Println("Look like a Json, try json umarshal")
|
||||||
err = json.Unmarshal(buf, &cnf)
|
err = json.Unmarshal(buf, &cnf)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
log.Println("It is Json Map")
|
log.Println("It is Json Map")
|
||||||
@ -64,19 +61,19 @@ func ReadYmlReader(path string) (cnf map[string]interface{}, err error) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_map, _err := goyaml2.Read(bytes.NewBuffer(buf))
|
data, err := goyaml2.Read(bytes.NewBuffer(buf))
|
||||||
if _err != nil {
|
if err != nil {
|
||||||
log.Println("Goyaml2 ERR>", string(buf), _err)
|
log.Println("Goyaml2 ERR>", string(buf), err)
|
||||||
//err = goyaml.Unmarshal(buf, &cnf)
|
|
||||||
err = _err
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if _map == nil {
|
|
||||||
|
if data == nil {
|
||||||
log.Println("Goyaml2 output nil? Pls report bug\n" + string(buf))
|
log.Println("Goyaml2 output nil? Pls report bug\n" + string(buf))
|
||||||
|
return
|
||||||
}
|
}
|
||||||
cnf, ok := _map.(map[string]interface{})
|
cnf, ok := data.(map[string]interface{})
|
||||||
if !ok {
|
if !ok {
|
||||||
log.Println("Not a Map? >> ", string(buf), _map)
|
log.Println("Not a Map? >> ", string(buf), data)
|
||||||
cnf = nil
|
cnf = nil
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
// @license http://github.com/astaxie/beego/blob/master/LICENSE
|
// @license http://github.com/astaxie/beego/blob/master/LICENSE
|
||||||
//
|
//
|
||||||
// @authors astaxie
|
// @authors astaxie
|
||||||
package config
|
package yaml
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"os"
|
"os"
|
||||||
|
Loading…
Reference in New Issue
Block a user