25 lines
544 B
Go
25 lines
544 B
Go
package text_component_validators
|
|
|
|
import (
|
|
"blocky/internal/block/text_component"
|
|
"fmt"
|
|
"regexp"
|
|
)
|
|
|
|
func Regex(pattern string) text_component.TextComponentOption {
|
|
re := regexp.MustCompile(pattern)
|
|
|
|
return func(c *text_component.TextComponentConfig) {
|
|
c.Validators = append(c.Validators, func(value any) error {
|
|
s, ok := value.(string)
|
|
if !ok {
|
|
return fmt.Errorf("provided value bust be a string: %v", value)
|
|
}
|
|
if !re.MatchString(s) {
|
|
return fmt.Errorf("must match pattern %s", pattern)
|
|
}
|
|
return nil
|
|
})
|
|
}
|
|
}
|