...

Source file src/github.com/xlab/treeprint/helpers.go

Documentation: github.com/xlab/treeprint

     1  package treeprint
     2  
     3  import (
     4  	"reflect"
     5  	"strings"
     6  )
     7  
     8  func isEmpty(v *reflect.Value) bool {
     9  	switch v.Kind() {
    10  	case reflect.Array, reflect.Map, reflect.Slice, reflect.String:
    11  		return v.Len() == 0
    12  	case reflect.Bool:
    13  		return !v.Bool()
    14  	case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
    15  		return v.Int() == 0
    16  	case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:
    17  		return v.Uint() == 0
    18  	case reflect.Float32, reflect.Float64:
    19  		return v.Float() == 0
    20  	case reflect.Interface, reflect.Ptr:
    21  		return v.IsNil()
    22  	}
    23  	return false
    24  }
    25  
    26  func tagSpec(tag string) (name string, omit bool) {
    27  	parts := strings.Split(tag, ",")
    28  	if len(parts) < 2 {
    29  		return tag, false
    30  	}
    31  	if parts[1] == "omitempty" {
    32  		return parts[0], true
    33  	}
    34  	return parts[0], false
    35  }
    36  
    37  func filterTags(tag reflect.StructTag) string {
    38  	tags := strings.Split(string(tag), " ")
    39  	filtered := make([]string, 0, len(tags))
    40  	for i := range tags {
    41  		if strings.HasPrefix(tags[i], "tree:") {
    42  			continue
    43  		}
    44  		filtered = append(filtered, tags[i])
    45  	}
    46  	return strings.Join(filtered, " ")
    47  }
    48  

View as plain text