mirror of
https://github.com/gotenberg/gotenberg.git
synced 2026-08-08 08:32:16 +01:00
61 lines
1.0 KiB
Go
61 lines
1.0 KiB
Go
package xassert
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/thecodingmachine/gotenberg/internal/pkg/xerror"
|
|
)
|
|
|
|
// RuleString is an interface for
|
|
// validating a string.
|
|
type RuleString interface {
|
|
with(key, value string)
|
|
validate() error
|
|
}
|
|
|
|
type baseRuleString struct {
|
|
key string
|
|
value string
|
|
}
|
|
|
|
func (r *baseRuleString) with(key, value string) {
|
|
r.key = key
|
|
r.value = value
|
|
}
|
|
|
|
type ruleStringOneOf struct {
|
|
*baseRuleString
|
|
values []string
|
|
}
|
|
|
|
func (r ruleStringOneOf) validate() error {
|
|
const op string = "xassert.ruleStringOneOf.validate"
|
|
for _, v := range r.values {
|
|
if r.value == v {
|
|
return nil
|
|
}
|
|
}
|
|
return xerror.Invalid(
|
|
op,
|
|
fmt.Sprintf("'%s' should be one of '%v', got '%s'", r.key, r.values, r.value),
|
|
nil,
|
|
)
|
|
}
|
|
|
|
/*
|
|
StringOneOf returns a RuleString for
|
|
validating that a string is one of given
|
|
values.
|
|
*/
|
|
func StringOneOf(values []string) RuleString {
|
|
return ruleStringOneOf{
|
|
&baseRuleString{},
|
|
values,
|
|
}
|
|
}
|
|
|
|
// Compile-time checks to ensure type implements desired interfaces.
|
|
var (
|
|
_ = RuleString(new(ruleStringOneOf))
|
|
)
|