in processor/processor.go [530:570]
func parseMarkers(markers markers.MarkerValues) (string, []string) {
defaultValue := ""
validation := []string{}
markerNames := make([]string, 0, len(markers))
for name := range markers {
markerNames = append(markerNames, name)
}
sort.Strings(markerNames)
for _, name := range markerNames {
value := markers[name][len(markers[name])-1]
if strings.HasPrefix(name, "kubebuilder:validation:") {
name := strings.TrimPrefix(name, "kubebuilder:validation:")
switch name {
case "Pattern":
value = fmt.Sprintf("`%s`", value)
// FIXME: XValidation currently removed due to being long and difficult to read.
// E.g. "XValidation: {self.page < 200 Please start a new book.}"
case "XValidation":
continue
}
validation = append(validation, fmt.Sprintf("%s: %v", name, value))
}
if name == "kubebuilder:default" {
if value, ok := value.(crdmarkers.Default); ok {
defaultValue = fmt.Sprintf("%v", value.Value)
if strings.HasPrefix(defaultValue, "map[") {
defaultValue = strings.TrimPrefix(defaultValue, "map[")
defaultValue = strings.TrimSuffix(defaultValue, "]")
defaultValue = fmt.Sprintf("{ %s }", defaultValue)
}
}
}
}
return defaultValue, validation
}