From 343cdecabd46e2b505f3f92c8281753df1ee0fee Mon Sep 17 00:00:00 2001 From: tjpcc Date: Sat, 26 Aug 2023 09:22:03 -0600 Subject: GmisubToAtom: output result to any io.Writer rather than return a string --- gemini/gemtext/sub.go | 16 +++++++++++----- gemini/gemtext/sub_test.go | 7 +++++-- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/gemini/gemtext/sub.go b/gemini/gemtext/sub.go index 1247643..365d41b 100644 --- a/gemini/gemtext/sub.go +++ b/gemini/gemtext/sub.go @@ -3,6 +3,7 @@ package gemtext import ( "bytes" "html/template" + "io" "net/url" "regexp" "strconv" @@ -14,12 +15,17 @@ import ( // // It identifies feed fields and entries according to the specification at // gemini://gemini.circumlunar.space/docs/companion/subscription.gmi -func GmisubToAtom(doc Document, location url.URL) string { - buf := &bytes.Buffer{} - if err := atomTmpl.Execute(buf, parseGemSub(doc, &location)); err != nil { - panic(err) +func GmisubToAtom(doc Document, location url.URL, out io.Writer) error { + if _, err := out.Write([]byte(``)); err != nil { + return err } - return `` + "\n" + buf.String() + if _, err := out.Write([]byte{'\n'}); err != nil { + return err + } + if err := atomTmpl.Execute(out, parseGemSub(doc, &location)); err != nil { + return err + } + return nil } type gmiSub struct { diff --git a/gemini/gemtext/sub_test.go b/gemini/gemtext/sub_test.go index 26f98ed..f080705 100644 --- a/gemini/gemtext/sub_test.go +++ b/gemini/gemtext/sub_test.go @@ -51,8 +51,11 @@ func TestGemsubToAtom(t *testing.T) { if err != nil { t.Fatal(err) } - xml := GmisubToAtom(doc, *loc) - if xml != test.output { + out := &bytes.Buffer{} + if err := GmisubToAtom(doc, *loc, out); err != nil { + t.Fatal(err) + } + if out.String() != test.output { t.Fatal("mismatched output") } }) -- cgit v1.2.3