Skip to content

Commit aa8e7a0

Browse files
committed
missing error(nil) from XML(). This closes #1
1 parent 0b1e077 commit aa8e7a0

File tree

3 files changed

+37
-8
lines changed

3 files changed

+37
-8
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
.vscode/

tablib_test.go

+23-1
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@ package tablib_test
33
import (
44
"bytes"
55
"encoding/base64"
6+
"testing"
7+
68
tablib "github.com/agrison/go-tablib"
79
. "gopkg.in/check.v1"
8-
"testing"
910
)
1011

1112
func Test(t *testing.T) { TestingT(t) }
@@ -704,6 +705,27 @@ func (s *TablibSuite) TestLoadXML(c *C) {
704705
c.Assert(r["lastName"], Equals, "Washington")
705706
}
706707

708+
func (s *TablibSuite) TestXML(c *C) {
709+
ds := presidentDataset()
710+
xml, err := ds.XML()
711+
c.Assert(err, Equals, nil)
712+
c.Assert(xml, Equals, "<dataset>\n"+
713+
" <row>\n"+
714+
" <firstName>John</firstName>\n"+
715+
" <gpa>90</gpa>\n"+
716+
" <lastName>Adams</lastName>\n"+
717+
" </row> <row>\n"+
718+
" <firstName>George</firstName>\n"+
719+
" <gpa>67</gpa>\n"+
720+
" <lastName>Washington</lastName>\n"+
721+
" </row> <row>\n"+
722+
" <firstName>Thomas</firstName>\n"+
723+
" <gpa>50</gpa>\n"+
724+
" <lastName>Jefferson</lastName>\n"+
725+
" </row>\n"+
726+
" </dataset>")
727+
}
728+
707729
// ---------- Benchmarking ----------
708730

709731
func (s *TablibSuite) BenchmarkAppendRow(c *C) {

tablib_xml.go

+13-7
Original file line numberDiff line numberDiff line change
@@ -6,35 +6,41 @@ import (
66
)
77

88
// XML returns a XML representation of the Dataset as string.
9-
func (d *Dataset) XML() string {
9+
func (d *Dataset) XML() (string, error) {
1010
return d.XMLWithTagNamePrefixIndent("row", " ", " ")
1111
}
1212

1313
// XML returns a XML representation of the Databook as string.
14-
func (d *Databook) XML() string {
14+
func (d *Databook) XML() (string, error) {
1515
str := "<databook>\n"
1616
for _, s := range d.sheets {
1717
str += " <sheet>\n <title>" + s.title + "</title>\n "
18-
str += s.dataset.XMLWithTagNamePrefixIndent("row", " ", " ")
18+
row, err := s.dataset.XMLWithTagNamePrefixIndent("row", " ", " ")
19+
if err != nil {
20+
return "", nil
21+
}
22+
str += row
1923
str += "\n </sheet>"
2024
}
2125
str += "\n</databook>"
22-
return str
26+
return str, nil
2327
}
2428

2529
// XMLWithTagNamePrefixIndent returns a XML representation with custom tag, prefix and indent.
26-
func (d *Dataset) XMLWithTagNamePrefixIndent(tagName, prefix, indent string) string {
30+
func (d *Dataset) XMLWithTagNamePrefixIndent(tagName, prefix, indent string) (string, error) {
2731
back := d.Dict()
2832

2933
var b bytes.Buffer
3034
b.WriteString("<dataset>\n")
3135
for _, r := range back {
3236
m := mxj.Map(r.(map[string]interface{}))
33-
m.XmlIndentWriter(&b, prefix, indent, tagName)
37+
if err :=m.XmlIndentWriter(&b, prefix, indent, tagName); err != nil {
38+
return "", err
39+
}
3440
}
3541
b.WriteString("\n" + prefix + "</dataset>")
3642

37-
return b.String()
43+
return b.String(), nil
3844
}
3945

4046
// LoadXML loads a Dataset from an XML source.

0 commit comments

Comments
 (0)