diff --git a/example/main.go b/example/main.go index 48396d2..4a3ef7f 100644 --- a/example/main.go +++ b/example/main.go @@ -1,21 +1,34 @@ package main import ( - "encoding/json" "fmt" "github.com/brettlangdon/forge" ) func main() { + // Parse a `SectionValue` from `example.cfg` settings, err := forge.ParseFile("example.cfg") if err != nil { panic(err) } - data, err := json.Marshal(settings) - if err != nil { - panic(err) + // Get a single value + if settings.Contains("global") { + // Get `global` casted as `StringValue` + value := settings.GetString("global") + fmt.Printf("global = \"%s\"\r\n", value.GetValue()) } - fmt.Println(string(data)) + + // Get a nested value + value, err := settings.Resolve("primary.included_setting") + fmt.Printf("primary.included_setting = \"%s\"\r\n", value.GetValue()) + + // Convert settings to a map + settingsMap, err := settings.ToMap() + fmt.Printf("global = \"%s\"\r\n", settingsMap["global"]) + + // Convert settings to JSON + jsonBytes, err := settings.ToJSON() + fmt.Printf("\r\n\r\n%s\r\n", string(jsonBytes)) } diff --git a/forge.go b/forge.go index 322a297..ea17033 100644 --- a/forge.go +++ b/forge.go @@ -5,41 +5,22 @@ import ( "io" "strings" + "github.com/brettlangdon/forge/config" "github.com/brettlangdon/forge/parser" ) -func ParseString(data string) (map[string]interface{}, error) { - settings, err := parser.ParseReader(strings.NewReader(data)) - if err != nil { - return nil, err - } - - return settings.ToMap() +func ParseString(data string) (*config.SectionValue, error) { + return parser.ParseReader(strings.NewReader(data)) } -func ParseBytes(data []byte) (map[string]interface{}, error) { - settings, err := parser.ParseReader(bytes.NewReader(data)) - if err != nil { - return nil, err - } - - return settings.ToMap() +func ParseBytes(data []byte) (*config.SectionValue, error) { + return parser.ParseReader(bytes.NewReader(data)) } -func ParseFile(filename string) (map[string]interface{}, error) { - settings, err := parser.ParseFile(filename) - if err != nil { - return nil, err - } - - return settings.ToMap() +func ParseFile(filename string) (*config.SectionValue, error) { + return parser.ParseFile(filename) } -func ParseReader(reader io.Reader) (map[string]interface{}, error) { - settings, err := parser.ParseReader(reader) - if err != nil { - return nil, err - } - - return settings.ToMap() +func ParseReader(reader io.Reader) (*config.SectionValue, error) { + return parser.ParseReader(reader) }