mirror of
https://github.com/zoriya/bubbles.git
synced 2026-08-05 04:36:07 +00:00
docs: add example for ValidateFunc (#705)
* docs(textinput): add ValidateFunc example * chore: remove print statement * chore: rename the -> this anonymous func
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
package textinput
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strconv"
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
@@ -43,3 +45,36 @@ func Test_SlicingOutsideCap(t *testing.T) {
|
||||
textinput.Width = 32
|
||||
textinput.View()
|
||||
}
|
||||
|
||||
func ExampleValidateFunc() {
|
||||
creditCardNumber := New()
|
||||
creditCardNumber.Placeholder = "4505 **** **** 1234"
|
||||
creditCardNumber.Focus()
|
||||
creditCardNumber.CharLimit = 20
|
||||
creditCardNumber.Width = 30
|
||||
creditCardNumber.Prompt = ""
|
||||
// This anonymous function is a valid function for ValidateFunc.
|
||||
creditCardNumber.Validate = func(s string) error {
|
||||
// Credit Card Number should a string less than 20 digits
|
||||
// It should include 16 integers and 3 spaces
|
||||
if len(s) > 16+3 {
|
||||
return fmt.Errorf("CCN is too long")
|
||||
}
|
||||
|
||||
if len(s) == 0 || len(s)%5 != 0 && (s[len(s)-1] < '0' || s[len(s)-1] > '9') {
|
||||
return fmt.Errorf("CCN is invalid")
|
||||
}
|
||||
|
||||
// The last digit should be a number unless it is a multiple of 4 in which
|
||||
// case it should be a space
|
||||
if len(s)%5 == 0 && s[len(s)-1] != ' ' {
|
||||
return fmt.Errorf("CCN must separate groups with spaces")
|
||||
}
|
||||
|
||||
// The remaining digits should be integers
|
||||
c := strings.ReplaceAll(s, " ", "")
|
||||
_, err := strconv.ParseInt(c, 10, 64)
|
||||
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user