From 5f7b9eabed9a5481abdb0d9cc93b4677188aaf6f Mon Sep 17 00:00:00 2001 From: Inanc Gumus Date: Mon, 2 Sep 2019 22:47:49 +0300 Subject: [PATCH] remove: decoder code from marshaler --- interfaces/10-marshaler/_decoder.go | 60 --------------- interfaces/10-marshaler/_decoder_reader.go | 85 ---------------------- interfaces/10-marshaler/_main.go | 42 ----------- interfaces/10-marshaler/_main_reader.go | 30 -------- 4 files changed, 217 deletions(-) delete mode 100644 interfaces/10-marshaler/_decoder.go delete mode 100644 interfaces/10-marshaler/_decoder_reader.go delete mode 100644 interfaces/10-marshaler/_main.go delete mode 100644 interfaces/10-marshaler/_main_reader.go diff --git a/interfaces/10-marshaler/_decoder.go b/interfaces/10-marshaler/_decoder.go deleted file mode 100644 index 75f7669..0000000 --- a/interfaces/10-marshaler/_decoder.go +++ /dev/null @@ -1,60 +0,0 @@ -// For more tutorials: https://blog.learngoprogramming.com -// -// Copyright © 2018 Inanc Gumus -// Learn Go Programming Course -// License: https://creativecommons.org/licenses/by-nc-sa/4.0/ -// - -package main - -import ( - "encoding/json" - "reflect" -) - -type decoder map[string]interface{} - -type schema struct { - Category string - Item json.RawMessage -} - -func (d decoder) decode(data []byte) (list, error) { - var schemas []schema - - if err := json.Unmarshal(data, &schemas); err != nil { - return nil, err - } - - return d.products(schemas) -} - -func (d decoder) products(ss []schema) (list, error) { - var store list - - for _, s := range ss { - prod, err := d.product(s.Category, s.Item) - - if err != nil { - return nil, err - } - - store = append(store, prod) - } - - return store, nil -} - -func (d decoder) product(kind string, data []byte) (item, error) { - p := d.newProduct(kind) - - err := json.Unmarshal(data, p) - - return p, err -} - -func (d decoder) newProduct(kind string) item { - t := reflect.TypeOf(d[kind]) - v := reflect.New(t) - return v.Interface().(item) -} diff --git a/interfaces/10-marshaler/_decoder_reader.go b/interfaces/10-marshaler/_decoder_reader.go deleted file mode 100644 index a0f9e5b..0000000 --- a/interfaces/10-marshaler/_decoder_reader.go +++ /dev/null @@ -1,85 +0,0 @@ -// For more tutorials: https://blog.learngoprogramming.com -// -// Copyright © 2018 Inanc Gumus -// Learn Go Programming Course -// License: https://creativecommons.org/licenses/by-nc-sa/4.0/ -// - -package main - -import ( - "encoding/json" - "io" - "io/ioutil" - "os" - "reflect" -) - -type decoder map[string]interface{} - -type schema struct { - Category string - Item json.RawMessage -} - -func (d decoder) fromFile(path string) (list, error) { - f, err := os.Open(path) - if err != nil { - return nil, err - } - - return d.readFile(f) -} - -func (d decoder) readFile(f *os.File) (list, error) { - return d.read(f) -} - -func (d decoder) read(r io.Reader) (list, error) { - data, err := ioutil.ReadAll(r) - if err != nil { - return nil, err - } - - return d.decode(data) -} - -func (d decoder) decode(data []byte) (list, error) { - var schemas []schema - - if err := json.Unmarshal(data, &schemas); err != nil { - return nil, err - } - - return d.products(schemas) -} - -func (d decoder) products(ss []schema) (list, error) { - var store list - - for _, s := range ss { - prod, err := d.product(s.Category, s.Item) - - if err != nil { - return nil, err - } - - store = append(store, prod) - } - - return store, nil -} - -func (d decoder) product(kind string, data []byte) (item, error) { - p := d.newProduct(kind) - - err := json.Unmarshal(data, p) - - return p, err -} - -func (d decoder) newProduct(kind string) item { - t := reflect.TypeOf(d[kind]) - v := reflect.New(t) - return v.Interface().(item) -} diff --git a/interfaces/10-marshaler/_main.go b/interfaces/10-marshaler/_main.go deleted file mode 100644 index 9679ed2..0000000 --- a/interfaces/10-marshaler/_main.go +++ /dev/null @@ -1,42 +0,0 @@ -// For more tutorials: https://blog.learngoprogramming.com -// -// Copyright © 2018 Inanc Gumus -// Learn Go Programming Course -// License: https://creativecommons.org/licenses/by-nc-sa/4.0/ -// - -package main - -import ( - "fmt" - "io/ioutil" - "log" - "os" -) - -func main() { - dec := make(decoder) - dec["book"] = book{} - dec["game"] = game{} - dec["puzzle"] = puzzle{} - dec["toy"] = toy{} - - data, err := ioutil.ReadAll(os.Stdin) - if err != nil { - log.Fatalln(err) - } - - store, err := dec.decode(data) - if err != nil { - log.Fatalln(err) - } - - fmt.Print(store) - - // store.discount(.5) - // fmt.Print(store) - - // ---- - // data, err := save(store) - // fmt.Println(string(data), err) -} diff --git a/interfaces/10-marshaler/_main_reader.go b/interfaces/10-marshaler/_main_reader.go deleted file mode 100644 index 9dc25be..0000000 --- a/interfaces/10-marshaler/_main_reader.go +++ /dev/null @@ -1,30 +0,0 @@ -// For more tutorials: https://blog.learngoprogramming.com -// -// Copyright © 2018 Inanc Gumus -// Learn Go Programming Course -// License: https://creativecommons.org/licenses/by-nc-sa/4.0/ -// - -package main - -import ( - "fmt" - "log" - "os" -) - -func main() { - dec := decoder{ - "book": book{}, - "game": game{}, - "puzzle": puzzle{}, - "toy": toy{}, - } - - store, err := dec.read(os.Stdin) - if err != nil { - log.Fatalln(err) - } - - fmt.Print(store) -}