|  | // code examples for godoc | 
|  |  | 
|  | package toml | 
|  |  | 
|  | import ( | 
|  | "fmt" | 
|  | ) | 
|  |  | 
|  | func ExampleNodeFilterFn_filterExample() { | 
|  | tree, _ := Load(` | 
|  | [struct_one] | 
|  | foo = "foo" | 
|  | bar = "bar" | 
|  |  | 
|  | [struct_two] | 
|  | baz = "baz" | 
|  | gorf = "gorf" | 
|  | `) | 
|  |  | 
|  | // create a query that references a user-defined-filter | 
|  | query, _ := CompileQuery("$[?(bazOnly)]") | 
|  |  | 
|  | // define the filter, and assign it to the query | 
|  | query.SetFilter("bazOnly", func(node interface{}) bool { | 
|  | if tree, ok := node.(*TomlTree); ok { | 
|  | return tree.Has("baz") | 
|  | } | 
|  | return false // reject all other node types | 
|  | }) | 
|  |  | 
|  | // results contain only the 'struct_two' TomlTree | 
|  | query.Execute(tree) | 
|  | } | 
|  |  | 
|  | func ExampleQuery_queryExample() { | 
|  | config, _ := Load(` | 
|  | [[book]] | 
|  | title = "The Stand" | 
|  | author = "Stephen King" | 
|  | [[book]] | 
|  | title = "For Whom the Bell Tolls" | 
|  | author = "Ernest Hemmingway" | 
|  | [[book]] | 
|  | title = "Neuromancer" | 
|  | author = "William Gibson" | 
|  | `) | 
|  |  | 
|  | // find and print all the authors in the document | 
|  | authors, _ := config.Query("$.book.author") | 
|  | for _, name := range authors.Values() { | 
|  | fmt.Println(name) | 
|  | } | 
|  | } | 
|  |  | 
|  | func Example_comprehensiveExample() { | 
|  | config, err := LoadFile("config.toml") | 
|  |  | 
|  | if err != nil { | 
|  | fmt.Println("Error ", err.Error()) | 
|  | } else { | 
|  | // retrieve data directly | 
|  | user := config.Get("postgres.user").(string) | 
|  | password := config.Get("postgres.password").(string) | 
|  |  | 
|  | // or using an intermediate object | 
|  | configTree := config.Get("postgres").(*TomlTree) | 
|  | user = configTree.Get("user").(string) | 
|  | password = configTree.Get("password").(string) | 
|  | fmt.Println("User is ", user, ". Password is ", password) | 
|  |  | 
|  | // show where elements are in the file | 
|  | fmt.Printf("User position: %v\n", configTree.GetPosition("user")) | 
|  | fmt.Printf("Password position: %v\n", configTree.GetPosition("password")) | 
|  |  | 
|  | // use a query to gather elements without walking the tree | 
|  | results, _ := config.Query("$..[user,password]") | 
|  | for ii, item := range results.Values() { | 
|  | fmt.Printf("Query result %d: %v\n", ii, item) | 
|  | } | 
|  | } | 
|  | } |