package pkg import ( "regexp" "github.rackspace.com/gorax/tools/util" ) type ( RouteDomain struct { Name string `json:"name"` Vlan []string `json:"vlans"` Description string `json:"description"` RoutingProto string `json:"routing_protocol"` } ) func ParseRouteDomain(r []string) *RouteDomain { return &RouteDomain{ Vlan: func(s string) []string { var vlans []string c := util.RegexpString(regexp.MustCompile(`(?i)vlans\s+{((.|\n)*?)}`), s) for _, v := range matchWordRegex.FindAllStringSubmatch(c, -1) { vlans = append(vlans, v[1]) } return vlans }(r[2]), RoutingProto: util.RegexpFindString(matchWordRegex, util.RegexpString(regexp.MustCompile(`(?i)routing-protocol\s+{((.|\n)*?)}`), r[2])), Description: util.RegexpFindString(descriptionRegex, r[2]), } } func ParseRouteDomains(s string) ([]*RouteDomain, error) { var rd []*RouteDomain for _, r := range regexp.MustCompile(`(?i)net\s+route-domain\s+([0-9]+)((.|\n)*?)(\n}|$)`).FindAllStringSubmatch(s, -1) { l := ParseRouteDomain(r) l.Name = r[1] rd = append(rd, l) } return rd, nil }