package refmt_test

import (
	"bytes"
	"fmt"

	"github.com/polydawn/refmt"
	"github.com/polydawn/refmt/obj/atlas"
)

func ExampleJsonEncodeAtlasDefaults() {
	type MyType struct {
		X string
		Y int
	}

	MyType_AtlasEntry := atlas.BuildEntry(MyType{}).
		StructMap().Autogenerate().
		Complete()

	atl := atlas.MustBuild(
		MyType_AtlasEntry,
		// this is a vararg... stack more entries here!
	)

	var buf bytes.Buffer
	encoder := refmt.NewAtlasedJsonEncoder(&buf, atl)
	err := encoder.Marshal(MyType{"a", 1})
	fmt.Println(buf.String())
	fmt.Printf("%v\n", err)

	// Output:
	// {"x":"a","y":1}
	// <nil>
}

func ExampleJsonEncodeAtlasCustom() {
	type MyType struct {
		X string
		Y int
	}

	MyType_AtlasEntry := atlas.BuildEntry(MyType{}).
		StructMap().
		AddField("X", atlas.StructMapEntry{SerialName: "overrideName"}).
		// and no "Y" mapping at all!
		Complete()

	atl := atlas.MustBuild(
		MyType_AtlasEntry,
		// this is a vararg... stack more entries here!
	)

	var buf bytes.Buffer
	encoder := refmt.NewAtlasedJsonEncoder(&buf, atl)
	err := encoder.Marshal(MyType{"a", 1})
	fmt.Println(buf.String())
	fmt.Printf("%v\n", err)

	// Output:
	// {"overrideName":"a"}
	// <nil>
}

package refmt_test

import (
	"bytes"
	"fmt"

	"github.com/polydawn/refmt"
	"github.com/polydawn/refmt/obj/atlas"
)

func ExampleJsonEncodeDefaults() {
	type MyType struct {
		X string
		Y int
	}

	MyType_AtlasEntry := atlas.BuildEntry(MyType{}).
		StructMap().Autogenerate().
		Complete()

	atl := atlas.MustBuild(
		MyType_AtlasEntry,
		// this is a vararg... stack more entries here!
	)

	var buf bytes.Buffer
	encoder := refmt.NewAtlasedJsonEncoder(&buf, atl)
	err := encoder.Marshal(MyType{"a", 1})
	fmt.Println(buf.String())
	fmt.Printf("%v\n", err)

	// Output:
	// {"x":"a","y":1}
	// <nil>
}

--- 
+++ 
@@ -8,7 +8,7 @@
 	"github.com/polydawn/refmt/obj/atlas"
 )
 
-func ExampleJsonEncodeDefaults() {
+func ExampleJsonEncodeAtlasDefaults() {
 	type MyType struct {
 		X string
 		Y int
@@ -33,3 +33,31 @@
 	// {"x":"a","y":1}
 	// <nil>
 }
+
+func ExampleJsonEncodeAtlasCustom() {
+	type MyType struct {
+		X string
+		Y int
+	}
+
+	MyType_AtlasEntry := atlas.BuildEntry(MyType{}).
+		StructMap().
+		AddField("X", atlas.StructMapEntry{SerialName: "overrideName"}).
+		// and no "Y" mapping at all!
+		Complete()
+
+	atl := atlas.MustBuild(
+		MyType_AtlasEntry,
+		// this is a vararg... stack more entries here!
+	)
+
+	var buf bytes.Buffer
+	encoder := refmt.NewAtlasedJsonEncoder(&buf, atl)
+	err := encoder.Marshal(MyType{"a", 1})
+	fmt.Println(buf.String())
+	fmt.Printf("%v\n", err)
+
+	// Output:
+	// {"overrideName":"a"}
+	// <nil>
+}
Add example of building your own struct mapping atlas, with details.

Signed-off-by: Eric Myhre <2346ad27d7568ba9896f1b7da6b5991251debdf2@exultant.us>
