From 6529350bb6536890525cb0273a31006d45874af2 Mon Sep 17 00:00:00 2001 From: Tamas Laczko Date: Mon, 23 Dec 2019 15:37:32 +0100 Subject: [PATCH 1/6] pass io.Reader instead of []byte --- struct.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/struct.go b/struct.go index f7029b9..dbeb3a0 100644 --- a/struct.go +++ b/struct.go @@ -4,6 +4,7 @@ import ( "bytes" "errors" "fmt" + "io" "io/ioutil" "os" @@ -57,16 +58,16 @@ func (l *Parser) ReadStruct(filename, format string) (interface{}, error) { return nil, err } defer f.Close() - byteValue, _ := ioutil.ReadAll(f) - return l.ParseStruct(byteValue, format) + return l.ParseStruct(f, format) } // ParseStruct parses byte slice into map or slice -func (l *Parser) ParseStruct(content []byte, format string) (interface{}, error) { +func (l *Parser) ParseStruct(content io.Reader, format string) (interface{}, error) { + byteValue, _ := ioutil.ReadAll(content) var out interface{} var err error if parser, ok := l.parsers[format]; ok { - out, err = parser(content) + out, err = parser(byteValue) } else { return nil, errors.New("Unknown file") } From 5cc00a1221f0560f8be05a41cdb13d299fcc7453 Mon Sep 17 00:00:00 2001 From: Tamas Laczko Date: Mon, 23 Dec 2019 16:18:08 +0100 Subject: [PATCH 2/6] change for testing --- go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go.mod b/go.mod index b4ca536..eda0f92 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ -module github.com/shoobyban/filehelper +module github.com/tamaslaczko/filehelper require ( github.com/kennygrant/sanitize v1.2.4 From 055361b168297c8675c8bc93ccaada40b791484c Mon Sep 17 00:00:00 2001 From: Tamas Laczko Date: Mon, 23 Dec 2019 17:33:57 +0100 Subject: [PATCH 3/6] Test --- template.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/template.go b/template.go index 67b2d38..67758b9 100644 --- a/template.go +++ b/template.go @@ -716,7 +716,7 @@ func xmlArray(v interface{}, roottag, itemtag string) (string, error) { func decode(s, format string) (interface{}, error) { p := NewParser() - res, err := p.ParseStruct([]byte(s), format) + res, err := p.ParseStruct(strings.NewReader(s), format) if err != nil { return nil, fmt.Errorf("Unable to parse json '%s': %v", s, err) } From f15721e1f0f165dc4950f7c7c8c4a108a09f0a86 Mon Sep 17 00:00:00 2001 From: Tamas Laczko Date: Mon, 23 Dec 2019 17:56:12 +0100 Subject: [PATCH 4/6] Test --- struct.go | 1 + 1 file changed, 1 insertion(+) diff --git a/struct.go b/struct.go index dbeb3a0..380a56e 100644 --- a/struct.go +++ b/struct.go @@ -63,6 +63,7 @@ func (l *Parser) ReadStruct(filename, format string) (interface{}, error) { // ParseStruct parses byte slice into map or slice func (l *Parser) ParseStruct(content io.Reader, format string) (interface{}, error) { + fmt.Println("CONTENT", content) byteValue, _ := ioutil.ReadAll(content) var out interface{} var err error From cb3433a704c59785e793601715fe7807c6ad8d64 Mon Sep 17 00:00:00 2001 From: Tamas Laczko Date: Fri, 10 Jan 2020 16:29:41 +0100 Subject: [PATCH 5/6] clean up from testing --- go.mod | 2 +- struct.go | 3 +-- struct_test.go | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/go.mod b/go.mod index eda0f92..b4ca536 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ -module github.com/tamaslaczko/filehelper +module github.com/shoobyban/filehelper require ( github.com/kennygrant/sanitize v1.2.4 diff --git a/struct.go b/struct.go index 380a56e..3e4043b 100644 --- a/struct.go +++ b/struct.go @@ -37,7 +37,7 @@ func NewParser() *Parser { var err error r.Columns, err = r.ReadHeader() if err != nil { - slog.Errorf("Error reading csv header %v", err) + slog.Errorf("Error reading csv headerxx %v", err) } return r.ReadAll() }, @@ -63,7 +63,6 @@ func (l *Parser) ReadStruct(filename, format string) (interface{}, error) { // ParseStruct parses byte slice into map or slice func (l *Parser) ParseStruct(content io.Reader, format string) (interface{}, error) { - fmt.Println("CONTENT", content) byteValue, _ := ioutil.ReadAll(content) var out interface{} var err error diff --git a/struct_test.go b/struct_test.go index 96c0f91..a0a91ec 100644 --- a/struct_test.go +++ b/struct_test.go @@ -60,7 +60,7 @@ func TestParseStruct(t *testing.T) { []string{"c", "5"}}, }, Reg: map[string]ParserFunc{ - "bfk": func(content []byte) (interface{}, error) { + "bfk": func(content io.Reader) (interface{}, error) { ret := map[string]interface{}{} lines := strings.Split(string(content), "\n") for _, line := range lines { From 6183028b43e6a1dda02e95977e481dad4cfef2c3 Mon Sep 17 00:00:00 2001 From: Tamas Laczko Date: Fri, 10 Jan 2020 16:51:19 +0100 Subject: [PATCH 6/6] Remove log change --- struct.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/struct.go b/struct.go index 3e4043b..dbeb3a0 100644 --- a/struct.go +++ b/struct.go @@ -37,7 +37,7 @@ func NewParser() *Parser { var err error r.Columns, err = r.ReadHeader() if err != nil { - slog.Errorf("Error reading csv headerxx %v", err) + slog.Errorf("Error reading csv header %v", err) } return r.ReadAll() },