package html_test import ( "code.squareroundforest.org/arpio/html" . "code.squareroundforest.org/arpio/html/tags" "testing" ) func TestLib(t *testing.T) { t.Run("templated tag", func(t *testing.T) { type ( member struct { name string level int } team struct { name string rank int members []member } ) memberHTML := html.FromTemplate( func(m member) Tag { return Li( Div("Name: ", m.name), Div("Level: ", m.level), ) }, ) teamHTML := html.FromTemplate( func(t team) Tag { return Div( H3(t.name), P("Rank: ", t.rank), Ul(html.Map(t.members, memberHTML)...), ) }, ) myTeam := team{ name: "Foo", rank: 3, members: []member{{ name: "Bar", level: 4, }, { name: "Baz", level: 1, }, { name: "Qux", level: 4, }}, } var b bytes.Buffer if html.RenderIndent(&b, "\t", 0, teamHTML(myTeam)); err != nil { t.Fatal(err) } if b.String() != `
Rank: 3