1// code examples for godoc
2
3package toml_test
4
5import (
6	"fmt"
7	"log"
8
9	toml "github.com/pelletier/go-toml"
10)
11
12func Example_tree() {
13	config, err := toml.LoadFile("config.toml")
14
15	if err != nil {
16		fmt.Println("Error ", err.Error())
17	} else {
18		// retrieve data directly
19		user := config.Get("postgres.user").(string)
20		password := config.Get("postgres.password").(string)
21
22		// or using an intermediate object
23		configTree := config.Get("postgres").(*toml.Tree)
24		user = configTree.Get("user").(string)
25		password = configTree.Get("password").(string)
26		fmt.Println("User is", user, " and password is", password)
27
28		// show where elements are in the file
29		fmt.Printf("User position: %v\n", configTree.GetPosition("user"))
30		fmt.Printf("Password position: %v\n", configTree.GetPosition("password"))
31	}
32}
33
34func Example_unmarshal() {
35	type Employer struct {
36		Name  string
37		Phone string
38	}
39	type Person struct {
40		Name     string
41		Age      int64
42		Employer Employer
43	}
44
45	document := []byte(`
46	name = "John"
47	age = 30
48	[employer]
49		name = "Company Inc."
50		phone = "+1 234 567 89012"
51	`)
52
53	person := Person{}
54	toml.Unmarshal(document, &person)
55	fmt.Println(person.Name, "is", person.Age, "and works at", person.Employer.Name)
56	// Output:
57	// John is 30 and works at Company Inc.
58}
59
60func ExampleMarshal() {
61	type Postgres struct {
62		User     string `toml:"user"`
63		Password string `toml:"password"`
64		Database string `toml:"db" commented:"true" comment:"not used anymore"`
65	}
66	type Config struct {
67		Postgres Postgres `toml:"postgres" comment:"Postgres configuration"`
68	}
69
70	config := Config{Postgres{User: "pelletier", Password: "mypassword", Database: "old_database"}}
71	b, err := toml.Marshal(config)
72	if err != nil {
73		log.Fatal(err)
74	}
75	fmt.Println(string(b))
76	// Output:
77	// # Postgres configuration
78	// [postgres]
79	//
80	//   # not used anymore
81	//   # db = "old_database"
82	//   password = "mypassword"
83	//   user = "pelletier"
84}
85
86func ExampleUnmarshal() {
87	type Postgres struct {
88		User     string
89		Password string
90	}
91	type Config struct {
92		Postgres Postgres
93	}
94
95	doc := []byte(`
96	[postgres]
97	user = "pelletier"
98	password = "mypassword"`)
99
100	config := Config{}
101	toml.Unmarshal(doc, &config)
102	fmt.Println("user=", config.Postgres.User)
103	// Output:
104	// user= pelletier
105}
106