func List(arr []interface{}) string {
	items := []string{}
	for _, i := range arr {
		items = append(items, i.(string))
	}
	return strings.Join(items, ", ")
}
List returns a comma delimeted list of the given array
package engine
import (
	"net"
	"strings"
	"text/template"
)
type HostInfo struct {
	Type string
	Addr string
	Name string
}
func NetFuncs() template.FuncMap {
	funcMap := template.FuncMap{
		"slice":           Slice,
		"list":            List,
		"rpad":            RPad,
		"ipfmt":           IPFmt,
		"lookupHosts":     LookupHosts,
		"lookupIPv4Host":  LookupIPv4Host,
		"lookupIPv6Host":  LookupIPv6Host,
		"isValidIPv4":     IsValidIPv4,
		"isValidIPv6":     IsValidIPv6,
		"isValidIPv4Addr": IsValidIPv4Addr,
		"isValidIPv6Addr": IsValidIPv6Addr,
		"isValidIPv4CIDR": IsValidIPv4CIDR,
		"isValidIPv6CIDR": IsValidIPv6CIDR,
	}
	return funcMap
}
func Slice(args ...interface{}) []interface{} {
	return args
}