fender

package module
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 24, 2021 License: MIT Imports: 7 Imported by: 1

README

fender

a piece of rope or a tyre that protects the side of a boat from knocks

Usage

err := fender.NewFields().
	Add("firstName", fender.RequiredString(u.FirstName)).
	Add("lastName", fender.RequiredString(u.LastName)).
	Add("age", fender.MinInt(u.Age, 0), fender.MaxInt(u.Age, 130)).
	Add("email", fender.Email(u.Email, false)).
	Add("street", fender.RequiredString(u.Street)).
	Add("city", fender.RequiredString(u.City)).
	Add("planet", fender.RequiredString(u.Planet)).
	Add("phone", fender.RequiredString(u.Phone)).
	AllError()
if err != nil {
	panic(err)
}

Rules

List of built-in fending rules:

  • email
  • enum
  • max
  • min
  • required
  • regex
  • size

Benchmarks

goos: darwin
goarch: amd64
cpu: Intel(R) Core(TM) i9-8950HK CPU @ 2.90GHz
BenchmarkFender/valid-12           	     1496362	       699 ns/op
BenchmarkFender/invalid-12               1176252 	       975 ns/op
BenchmarkPlayground/valid-12           	   42367	     25967 ns/op
BenchmarkPlayground/invalid-12         	   37567	     28034 ns/op

References & alternatives

How to Contribute

Make a pull request...

License

Distributed under MIT License, please see license file within the code for more details.

Documentation

Index

Constants

View Source
const (
	DefaultRuleDelimiter  = ";"
	DefaultNameDelimiter  = ":"
	DefaultErrorDelimiter = ","
	DefaultMetaDelimiter  = "|"
)
View Source
const (
	RuleEmail Rule = "email"
	// EmailRegexWeak as https://davidcel.is/posts/stop-validating-email-addresses-with-regex/
	EmailRegexWeak = ".+@.+\\..+"
	// EmailRegexRFC5322 as https://stackoverflow.com/questions/201323/how-to-validate-an-email-address-using-a-regular-expression/201378#201378
	EmailRegexRFC5322 = "" /* 497-byte string literal not displayed */
)

Variables

View Source
var (
	RuleDelimiter  = DefaultRuleDelimiter
	NameDelimiter  = DefaultNameDelimiter
	ErrorDelimiter = DefaultErrorDelimiter
	MetaDelimiter  = DefaultMetaDelimiter
)

Functions

func Email

func Email(v string, lookup bool) error

Email validation using go standard package

func EmailRFC5322

func EmailRFC5322(v string, lookup bool) error

EmailRFC5322 validation using RFC5322 regex

func EmailWeak

func EmailWeak(v string) error

EmailWeak validation using simple regex

func Enum

func Enum(v Enumerator) error

func MaxFloat32

func MaxFloat32(v, expected float32) error

func MaxFloat32s

func MaxFloat32s(v []float32, expected int) error

func MaxFloat64

func MaxFloat64(v, expected float64) error

func MaxFloat64s

func MaxFloat64s(v []float64, expected int) error

func MaxInt

func MaxInt(v, expected int) error

func MaxInt8

func MaxInt8(v, expected int8) error

func MaxInt8s

func MaxInt8s(v []int8, expected int) error

func MaxInt32

func MaxInt32(v, expected int32) error

func MaxInt32s

func MaxInt32s(v []int32, expected int) error

func MaxInt64

func MaxInt64(v, expected int64) error

func MaxInt64s

func MaxInt64s(v []int64, expected int) error

func MaxInts

func MaxInts(v []int, expected int) error

func MaxString

func MaxString(v string, expected int) error

func MaxStrings

func MaxStrings(v []string, expected int) error

func MaxUInt

func MaxUInt(v, expected uint) error

func MaxUInt8

func MaxUInt8(v, expected uint8) error

func MaxUInt8s

func MaxUInt8s(v []uint8, expected int) error

func MaxUInt32

func MaxUInt32(v, expected uint32) error

func MaxUInt32s

func MaxUInt32s(v []uint32, expected int) error

func MaxUInt64

func MaxUInt64(v, expected uint64) error

func MaxUInt64s

func MaxUInt64s(v []uint64, expected int) error

func MaxUInts

func MaxUInts(v []uint, expected int) error

func MinFloat32

func MinFloat32(v, expected float32) error

func MinFloat64

func MinFloat64(v, expected float64) error

func MinInt

func MinInt(v, expected int) error

func MinInt8

func MinInt8(v, expected int8) error

func MinInt32

func MinInt32(v, expected int32) error

func MinInt64

func MinInt64(v, expected int64) error

func MinString

func MinString(v string, expected int) error

func Regex

func Regex(v string, regexp *regexp.Regexp) error

Regex validation using go standard package

func RequiredFloat32

func RequiredFloat32(v float32) error

func RequiredFloat64

func RequiredFloat64(v float64) error

func RequiredInt

func RequiredInt(v int) error

func RequiredInt8

func RequiredInt8(v int8) error

func RequiredInt32

func RequiredInt32(v int32) error

func RequiredInt64

func RequiredInt64(v int64) error

func RequiredString

func RequiredString(v string) error

func RequiredStrings

func RequiredStrings(v []string) error

func SizeFloat32

func SizeFloat32(v, expected float32) error

func SizeFloat64

func SizeFloat64(v, expected float64) error

func SizeInt

func SizeInt(v, expected int) error

func SizeInt8

func SizeInt8(v, expected int8) error

func SizeInt32

func SizeInt32(v, expected int32) error

func SizeInt64

func SizeInt64(v, expected int64) error

func SizeString

func SizeString(v string, expected int) error

func SizeStrings

func SizeStrings(v []string, expected int) error

Types

type Enumerator

type Enumerator interface {
	Valid() bool
}

type Fields

type Fields struct {
	// contains filtered or unexported fields
}

Fields type

func NewFields

func NewFields() *Fields

NewFields constructor

func (Fields) Add

func (f Fields) Add(name string, errs ...error) Fields

Add adds an error fields if a validation fails

func (Fields) All

func (f Fields) All() map[string][]error

All return all fields errors

func (Fields) AllError

func (f Fields) AllError() error

AllError returns all fields errors as error type

func (Fields) First

func (f Fields) First() map[string]error

First returns only all fields first error

func (Fields) FirstError

func (f Fields) FirstError() error

FirstError returns only all fields first errors as error type

func (Fields) HasErrors

func (f Fields) HasErrors() bool

HasErrors return true if there are no errors

type FieldsError

type FieldsError struct {
	Errors map[string]error
}

FieldsError type

func NewFieldsError

func NewFieldsError(e map[string]error) *FieldsError

NewFieldsError constructor

func (FieldsError) Error

func (e FieldsError) Error() string

Error interface

type FieldsErrors

type FieldsErrors struct {
	Errors map[string][]error
}

FieldsErrors type

func NewFieldsErrors

func NewFieldsErrors(e map[string][]error) *FieldsErrors

NewFieldsErrors constructor

func (FieldsErrors) Error

func (e FieldsErrors) Error() string

String interface

type RequiredError

type RequiredError struct {
	Type Rule `json:"type"`
}

type Rule

type Rule string
const RuleEnum Rule = "enum"
const RuleMax Rule = "max"
const RuleMin Rule = "min"
const RuleRegex Rule = "regex"
const RuleRequired Rule = "required"
const RuleSize Rule = "size"

func (Rule) String

func (r Rule) String() string

type RuleError

type RuleError struct {
	Rule Rule
	Meta string
}

func NewFendEmailError

func NewFendEmailError() *RuleError

NewFendEmailError constructor

func NewFendEnumError

func NewFendEnumError() *RuleError

NewFendEnumError constructor

func NewFendError

func NewFendError(fend Rule, meta string) *RuleError

NewFendError constructor

func NewFendMaxError

func NewFendMaxError(verb rune, v interface{}) *RuleError

NewFendMaxError constructor

func NewFendMinError

func NewFendMinError(verb rune, v interface{}) *RuleError

NewFendMinError constructor

func NewFendRegexError

func NewFendRegexError() *RuleError

NewFendRegexError constructor

func NewFendRequiredError

func NewFendRequiredError() *RuleError

NewFendRequiredError constructor

func NewFendSizeError

func NewFendSizeError(verb rune, v interface{}) *RuleError

NewFendSizeError constructor

func (*RuleError) Error

func (e *RuleError) Error() string

RuleError interface

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL