utils.go 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. // Copyright 2014 Manu Martinez-Almeida. All rights reserved.
  2. // Use of this source code is governed by a MIT style
  3. // license that can be found in the LICENSE file.
  4. package gin
  5. import (
  6. "encoding/xml"
  7. "reflect"
  8. "runtime"
  9. )
  10. type H map[string]interface{}
  11. // Allows type H to be used with xml.Marshal
  12. func (h H) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
  13. start.Name = xml.Name{
  14. Space: "",
  15. Local: "map",
  16. }
  17. if err := e.EncodeToken(start); err != nil {
  18. return err
  19. }
  20. for key, value := range h {
  21. elem := xml.StartElement{
  22. Name: xml.Name{Space: "", Local: key},
  23. Attr: []xml.Attr{},
  24. }
  25. if err := e.EncodeElement(value, elem); err != nil {
  26. return err
  27. }
  28. }
  29. if err := e.EncodeToken(xml.EndElement{Name: start.Name}); err != nil {
  30. return err
  31. }
  32. return nil
  33. }
  34. func filterFlags(content string) string {
  35. for i, a := range content {
  36. if a == ' ' || a == ';' {
  37. return content[:i]
  38. }
  39. }
  40. return content
  41. }
  42. func funcName(f interface{}) string {
  43. return runtime.FuncForPC(reflect.ValueOf(f).Pointer()).Name()
  44. }