github.com/wangyougui/gf/v2@v2.6.5/util/gvalid/internal/builtin/builtin_boolean.go (about)

     1  // Copyright GoFrame Author(https://goframe.org). All Rights Reserved.
     2  //
     3  // This Source Code Form is subject to the terms of the MIT License.
     4  // If a copy of the MIT was not distributed with this file,
     5  // You can obtain one at https://github.com/wangyougui/gf.
     6  
     7  package builtin
     8  
     9  import (
    10  	"errors"
    11  	"strings"
    12  )
    13  
    14  // RuleBoolean implements `boolean` rule:
    15  // Boolean(1,true,on,yes:true | 0,false,off,no,"":false)
    16  //
    17  // Format: boolean
    18  type RuleBoolean struct{}
    19  
    20  // boolMap defines the boolean values.
    21  var boolMap = map[string]struct{}{
    22  	"1":     {},
    23  	"true":  {},
    24  	"on":    {},
    25  	"yes":   {},
    26  	"":      {},
    27  	"0":     {},
    28  	"false": {},
    29  	"off":   {},
    30  	"no":    {},
    31  }
    32  
    33  func init() {
    34  	Register(RuleBoolean{})
    35  }
    36  
    37  func (r RuleBoolean) Name() string {
    38  	return "boolean"
    39  }
    40  
    41  func (r RuleBoolean) Message() string {
    42  	return "The {field} value `{value}` field must be true or false"
    43  }
    44  
    45  func (r RuleBoolean) Run(in RunInput) error {
    46  	if _, ok := boolMap[strings.ToLower(in.Value.String())]; ok {
    47  		return nil
    48  	}
    49  	return errors.New(in.Message)
    50  }