From b957cfd48b51658c0dd709f4430bb31feef7e665 Mon Sep 17 00:00:00 2001 From: Charles Banning Date: Mon, 12 Oct 2020 09:59:14 -0600 Subject: [PATCH] cleen up duplicate method --- deprecate/stuff.go | 37 +++++++++++++++++++++++++++++++++++++ xml.go | 36 ------------------------------------ 2 files changed, 37 insertions(+), 36 deletions(-) create mode 100644 deprecate/stuff.go diff --git a/deprecate/stuff.go b/deprecate/stuff.go new file mode 100644 index 0000000..e7da640 --- /dev/null +++ b/deprecate/stuff.go @@ -0,0 +1,37 @@ + +// ======================== newMapToXmlIndent + +func (mv Map) MarshalXml(rootTag ...string) ([]byte, error) { + m := map[string]interface{}(mv) + var err error + // s := new(string) + // b := new(strings.Builder) + b := new(bytes.Buffer) + p := new(pretty) // just a stub + + if len(m) == 1 && len(rootTag) == 0 { + for key, value := range m { + // if it an array, see if all values are map[string]interface{} + // we force a new root tag if we'll end up with no key:value in the list + // so: key:[string_val, bool:true] --> string_valtrue + switch value.(type) { + case []interface{}: + for _, v := range value.([]interface{}) { + switch v.(type) { + case map[string]interface{}: // noop + default: // anything else + err = marshalMapToXmlIndent(false, b, DefaultRootTag, m, p) + goto done + } + } + } + err = marshalMapToXmlIndent(false, b, key, value, p) + } + } else if len(rootTag) == 1 { + err = marshalMapToXmlIndent(false, b, rootTag[0], m, p) + } else { + err = marshalMapToXmlIndent(false, b, DefaultRootTag, m, p) + } +done: + return b.Bytes(), err +} diff --git a/xml.go b/xml.go index 7678ddb..258f538 100644 --- a/xml.go +++ b/xml.go @@ -1324,39 +1324,3 @@ func (e elemList) Less(i, j int) bool { return e[i][0].(string) <= e[j][0].(string) } -// ======================== newMapToXmlIndent - -func (mv Map) MarshalXml(rootTag ...string) ([]byte, error) { - m := map[string]interface{}(mv) - var err error - // s := new(string) - // b := new(strings.Builder) - b := new(bytes.Buffer) - p := new(pretty) // just a stub - - if len(m) == 1 && len(rootTag) == 0 { - for key, value := range m { - // if it an array, see if all values are map[string]interface{} - // we force a new root tag if we'll end up with no key:value in the list - // so: key:[string_val, bool:true] --> string_valtrue - switch value.(type) { - case []interface{}: - for _, v := range value.([]interface{}) { - switch v.(type) { - case map[string]interface{}: // noop - default: // anything else - err = marshalMapToXmlIndent(false, b, DefaultRootTag, m, p) - goto done - } - } - } - err = marshalMapToXmlIndent(false, b, key, value, p) - } - } else if len(rootTag) == 1 { - err = marshalMapToXmlIndent(false, b, rootTag[0], m, p) - } else { - err = marshalMapToXmlIndent(false, b, DefaultRootTag, m, p) - } -done: - return b.Bytes(), err -}