feature: #56 custom tegex for arguments (#244)

This commit is contained in:
James Read 2024-03-08 22:17:10 +00:00 committed by GitHub
parent 2fb40ff443
commit c97fd60c25
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 19 additions and 6 deletions

View File

@ -109,19 +109,27 @@ func TypeSafetyCheck(name string, value string, argumentType string) error {
}
func typeSafetyCheckRegex(name string, value string, argumentType string) error {
pattern, found := typecheckRegex[argumentType]
pattern := ""
if !found {
return errors.New("argument type not implemented " + argumentType)
if strings.HasPrefix(argumentType, "regex:") {
pattern = strings.Replace(argumentType, "regex:", "", 1)
} else {
found := false
pattern, found = typecheckRegex[argumentType]
if !found {
return errors.New("argument type not implemented " + argumentType)
}
}
matches, _ := regexp.MatchString(pattern, value)
if !matches {
log.WithFields(log.Fields{
"name": name,
"value": value,
"type": argumentType,
"name": name,
"value": value,
"type": argumentType,
"pattern": pattern,
}).Warn("Arg type check safety failure")
return errors.New("invalid argument, doesn't match " + argumentType)

View File

@ -108,6 +108,11 @@ class ArgumentForm extends window.HTMLElement {
domEl.setAttribute('step', '1')
} else {
domEl = document.createElement('input')
if (arg.type.startsWith(':regex')) {
domEl.setAttribute('pattern', arg.type.replace('regex:', ''))
}
domEl.onchange = () => {
const validateArgumentTypeArgs = {
value: domEl.value,