From 3696213e5d78570d206c5a6685f07da4658f784e Mon Sep 17 00:00:00 2001 From: dudaodong Date: Thu, 6 Mar 2025 20:02:33 +0800 Subject: [PATCH] doc: update for release v2.3.5 --- README.md | 28 ++++++++- README_zh-CN.md | 28 +++++++++ cryptor/rsa_private_example.pem | 98 +++++++++++++++---------------- cryptor/rsa_public_example.pem | 24 ++++---- docs/api/packages/validator.md | 38 ++++++++++++ docs/en/api/packages/validator.md | 38 ++++++++++++ 6 files changed, 192 insertions(+), 62 deletions(-) diff --git a/README.md b/README.md index cd05581..d585cc3 100644 --- a/README.md +++ b/README.md @@ -506,9 +506,24 @@ import "github.com/duke-git/lancet/v2/datetime" - **AddMinute** : add or sub day to the time. [[doc](https://github.com/duke-git/lancet/blob/main/docs/en/api/packages/datetime.md#AddMinute)] [[play](https://go.dev/play/p/nT1heB1KUUK)] +- **AddWeek** : add or sub week to time. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/en/api/packages/datetime.md#AddWeek)] + [[play](https://go.dev/play/p/todo)] +- **AddMonth** : add or sub months to time. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/en/api/packages/datetime.md#AddMonth)] + [[play](https://go.dev/play/p/todo)] - **AddYear** : add or sub year to the time. [[doc](https://github.com/duke-git/lancet/blob/main/docs/en/api/packages/datetime.md#AddYear)] [[play](https://go.dev/play/p/MqW2ujnBx10)] +- **AddDaySafe** : add or sub days to the time and ensure that the returned date does not exceed the valid date of the target year and month. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/en/api/packages/datetime.md#AddDaySafe)] + [[play](https://go.dev/play/p/todo)] +- **AddMonthSafe** : add or sub months to the time and ensure that the returned date does not exceed the valid date of the target year and month. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/en/api/packages/datetime.md#AddMonthSafe)] + [[play](https://go.dev/play/p/todo)] +- **AddYearSafe** : Add or sub years to the time and ensure that the returned date does not exceed the valid date of the target year and month. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/en/api/packages/datetime.md#AddYearSafe)] + [[play](https://go.dev/play/p/todo)] - **BeginOfMinute** : return the date time at the begin of minute of specific date. [[doc](https://github.com/duke-git/lancet/blob/main/docs/en/api/packages/datetime.md#BeginOfMinute)] [[play](https://go.dev/play/p/ieOLVJ9CiFT)] @@ -1561,6 +1576,9 @@ import "github.com/duke-git/lancet/v2/slice" - **Shuffle** : shuffle the slice. [[doc](https://github.com/duke-git/lancet/blob/main/docs/en/api/packages/slice.md#Shuffle)] [[play](https://go.dev/play/p/YHvhnWGU3Ge)] +- **ShuffleCopy** : return a new slice with elements shuffled. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/en/api/packages/slice.md#ShuffleCopy)] + [[play](todo)] - **IsAscending** : Checks if a slice is ascending order. [[doc](https://github.com/duke-git/lancet/blob/main/docs/en/api/packages/slice.md#IsAscending)] [[play](https://go.dev/play/p/9CtsFjet4SH)] @@ -1707,6 +1725,9 @@ import "github.com/duke-git/lancet/v2/stream" - **Reverse** : returns a stream whose elements are reverse order of given stream. [[doc](https://github.com/duke-git/lancet/blob/main/docs/en/api/packages/stream.md#Reverse)] [[play](https://go.dev/play/p/A8_zkJnLHm4)] +- **ReverseCopy** : returns a new slice of element order is reversed to the given slice. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/en/api/packages/stream.md#ReverseCopy)] + [[play](todo)] - **Range** : returns a stream whose elements are in the range from start(included) to end(excluded) original stream. [[doc](https://github.com/duke-git/lancet/blob/main/docs/en/api/packages/stream.md#Range)] [[play](https://go.dev/play/p/indZY5V2f4j)] @@ -1936,7 +1957,9 @@ import "github.com/duke-git/lancet/v2/strutil" - **ExtractContent** : extracts the content between the start and end strings in the source string. [[doc](https://github.com/duke-git/lancet/blob/main/docs/en/api/packages/strutil.md#ExtractContent)] [[play](https://go.dev/play/p/Ay9UIk7Rum9)] - +- **FindAllOccurrences** : Returns the positions of all occurrences of a substring in a string. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/en/api/packages/strutil.md#FindAllOccurrences)] + [[play](todo)]

22. System package contain some functions about os, runtime, shell command.        index

@@ -2190,6 +2213,9 @@ import "github.com/duke-git/lancet/v2/validator" - **IsIpV6** : check if the string is ipv6. [[doc](https://github.com/duke-git/lancet/blob/main/docs/en/api/packages/validator.md#IsIpV6)] [[play](https://go.dev/play/p/AHA0r0AzIdC)] +- **IsIpPort** : check if the string is ip:port. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/en/api/packages/validator.md#IsIpPort)] + [[play](todo)] - **IsStrongPassword** : check if the string is strong password. [[doc](https://github.com/duke-git/lancet/blob/main/docs/en/api/packages/validator.md#IsStrongPassword)] [[play](https://go.dev/play/p/QHdVcSQ3uDg)] diff --git a/README_zh-CN.md b/README_zh-CN.md index af6fb41..4dea046 100644 --- a/README_zh-CN.md +++ b/README_zh-CN.md @@ -507,9 +507,24 @@ import "github.com/duke-git/lancet/v2/datetime" - **AddMinute** : 将日期加/减分钟数。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/api/packages/datetime.md#AddMinute)] [[play](https://go.dev/play/p/nT1heB1KUUK)] +- **AddWeek** : 将日期加/减星期数. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/api/packages/datetime.md#AddWeek)] + [[play](https://go.dev/play/p/todo)] +- **AddMonth** : 将日期加/减月数. + [[doc](https://github.com/duke-git/lancet/blob/main/docs/api/packages/datetime.md#AddMonth)] + [[play](https://go.dev/play/p/todo)] - **AddYear** : 将日期加/减分年数。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/api/packages/datetime.md#AddYear)] [[play](https://go.dev/play/p/MqW2ujnBx10)] +- **AddDaySafe** : 增加/减少指定的天数,并确保日期是有效日期。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/api/packages/datetime.md#AddDaySafe)] + [[play](https://go.dev/play/p/todo)] +- **AddMonthSafe** : 增加/减少指定的月份,并确保日期是有效日期。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/api/packages/datetime.md#AddMonthSafe)] + [[play](https://go.dev/play/p/todo)] +- **AddYearSafe** : 增加/减少指定的年份,并确保日期是有效日期。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/api/packages/datetime.md#AddYearSafe)] + [[play](https://go.dev/play/p/todo)] - **BeginOfMinute** : 返回指定时间的分钟开始时间。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/api/packages/datetime.md#BeginOfMinute)] [[play](https://go.dev/play/p/ieOLVJ9CiFT)] @@ -1535,6 +1550,9 @@ import "github.com/duke-git/lancet/v2/slice" - **Reverse** : 反转切片中的元素顺序。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/api/packages/slice.md#Reverse)] [[play](https://go.dev/play/p/8uI8f1lwNrQ)] +- **ReverseCopy** : 反转切片中的元素顺序, 不改变原slice。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/api/packages/stream.md#ReverseCopy)] + [[play](todo)] - **Reducedeprecated** : 将切片中的元素依次运行 iteratee 函数,返回运行结果。(废弃:建议使用 ReduceBy) [[doc](https://github.com/duke-git/lancet/blob/main/docs/api/packages/slice.md#Reduce)] [[play](https://go.dev/play/p/_RfXJJWIsIm)] @@ -1559,6 +1577,9 @@ import "github.com/duke-git/lancet/v2/slice" - **Shuffle** : 随机打乱切片中的元素顺序。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/api/packages/slice.md#Shuffle)] [[play](https://go.dev/play/p/YHvhnWGU3Ge)] +- **ShuffleCopy** : 随机打乱切片中的元素顺序, 不改变原切片。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/api/packages/slice.md#ShuffleCopy)] + [[play](todo)] - **IsAscending** : 检查切片元素是否按升序排列。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/api/packages/slice.md#IsAscending)] [[play](https://go.dev/play/p/9CtsFjet4SH)] @@ -1936,6 +1957,10 @@ import "github.com/duke-git/lancet/v2/strutil" - **ExtractContent** : 提取两个标记之间的内容。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/api/packages/strutil.md#ExtractContent)] [[play](https://go.dev/play/p/Ay9UIk7Rum9)] +- **FindAllOccurrences** : 返回子字符串在字符串中所有出现的位置。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/api/packages/strutil.md#FindAllOccurrences)] + [[play](todo)] +

23. system 包含 os, runtime, shell command 的相关函数。       回到目录

@@ -2190,6 +2215,9 @@ import "github.com/duke-git/lancet/v2/validator" - **IsIpV6** : 验证字符串是否是ipv6地址。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/api/packages/validator.md#IsIpV6)] [[play](https://go.dev/play/p/AHA0r0AzIdC)] +- **IsIpPort** : 检查字符串是否是ip:port格式。 + [[doc](https://github.com/duke-git/lancet/blob/main/docs/api/packages/validator.md#IsIpPort)] + [[play](todo)] - **IsStrongPassword** : 验证字符串是否是强密码:(字母+数字+特殊字符)。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/api/packages/validator.md#IsStrongPassword)] [[play](https://go.dev/play/p/QHdVcSQ3uDg)] diff --git a/cryptor/rsa_private_example.pem b/cryptor/rsa_private_example.pem index 4637fa0..3b16f9d 100644 --- a/cryptor/rsa_private_example.pem +++ b/cryptor/rsa_private_example.pem @@ -1,51 +1,51 @@ -----BEGIN rsa private key----- -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 -----END rsa private key----- diff --git a/cryptor/rsa_public_example.pem b/cryptor/rsa_public_example.pem index 4bb986c..a10f2c1 100644 --- a/cryptor/rsa_public_example.pem +++ b/cryptor/rsa_public_example.pem @@ -1,14 +1,14 @@ -----BEGIN rsa public key----- -MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA77XqVTCS3dmAd5FnAvrT -PcXrVetPzJeksmqqu4EjFv6Fe4NFdZQIWtkjgJQ4v27KpZXUL2ExkJhodrfRegHF -gq9xiy822umUu6bCyBva1YxFQPevKqgPLY7n6wB3PJRnwnSszQCsUDyBC8JnqbeL -41qcRiBAjXSh0BFMERSl3F0AViGkVCRCmKuc9612Gi6iuw11cFbLUPqLL+YNk+NI -gW398nYUUNeacMG12h02n3YJ8HD5Q16PhdJ7Z93aAsDgKzl7dT5tyyv3w2p2wOse -1GPMfQffZQA+gXmw7+GJImJu3DtWKY0cQqzO1Wsa5t+YxMf0A12AYGJa+Y0aPgr8 -Vl8LY++NdujnazwsgzTJm94uuqHZiv+mtsYIpkLbuMWmBce05G8MtS0O9IabgBLx -rbUQvYk9Myv/ff4BgWkO06SAUq7GGUn0cI+EglyYYJCgeeBSQid7daQ8M4Idb9ve -Go2f7KJqHecRf3fzRwlbMMjoo0Nw19FAx/tQm1LTg1NxCaheAFI1UzUTCUAZE/X9 -QwviTuHXTnfjd0wfxeVaJRMyK9efOJuALAit9rtxyfm1fPRztvPwIrpy/wMUQ+7i -8xAEPWa+kXFtVLTqEwGnX3QYZf/NGJ/9RZmtpcxgpHIJ6OEyqVUYKKeU7R3uW7i3 -pv3au9lZ5Id1AvAqQWG8TvkCAwEAAQ== +MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAqX8BaBwlCUfe+J0D+bkR +Nky0/6aBVhxeeoIJY4FFdgewnloXLc7vxRVgwpUvx1n/FkvulPFCOT65zDSV2kpg +m3IZ8Y+gTlRg1S5Cu7QEsirlENhcH4NMewpDWiTosS5G6+H8P5stf+do0u4TAoYi +fmE3JjEI2ewchfSGqy3YIzunVVOnYSwAETOjXttLOYs7LLHQa2REo4fDaAVKebUv ++aA4ldXvPlK16Nxf2JESNh4oeHxUgBvcxkQDQDet7p7G30m/mNfVNeZJi5uOwnO1 +KIomAT8UosPoANpOXqtq1a4k7UdrIOJT6cXdFJ0byOdAfi5PlT0qOP4LtMs65Skm +L3QoY9lvX2jBlfjNiOc5uJtcvvYad2AMxqaeoig/xRYoUu0PNtbYjuzFkgYw7Tw3 +qcEOu9kZeTPUMQJoix54CgekBxeBjxCKGJ0UPTAfcEzfhMqMWqPKCFcV8v50/bbs +FTNksdJLEkl9Fv8in01YNIYid8OV0vYHt8liu7u76sZ59fpJJwOqboAqg58IUFXP +iwrNrVRUwRYWbZcDfcQ/hUZDNbJMDRSfK1HdyUlWxuhqf/GQ8RXvD/vuUy1ZHR+2 +IfHzoNCF0qqIFta6YWQsyVjRJe+v8IjiPAdpn4BCGB0l4W0oKJMDcZmJq6SjFFQm +7pdUXDkWbhDQ4GStvpUrZRsCAwEAAQ== -----END rsa public key----- diff --git a/docs/api/packages/validator.md b/docs/api/packages/validator.md index 232898b..d15fb73 100644 --- a/docs/api/packages/validator.md +++ b/docs/api/packages/validator.md @@ -49,6 +49,7 @@ import ( - [IsIp](#IsIp) - [IsIpV4](#IsIpV4) - [IsIpV6](#IsIpV6) +- [IsIpPort](#IsIpPort) - [IsStrongPassword](#IsStrongPassword) - [IsUrl](#IsUrl) - [IsWeakPassword](#IsWeakPassword) @@ -990,6 +991,43 @@ func main() { } ``` +### IsIpPort + +

检查字符串是否是ip:port格式。

+ +函数签名: + +```go +func IsIpPort(str string) bool +``` + +示例:[运行](todo) + +```go +import ( + "fmt" + "github.com/duke-git/lancet/v2/validator" +) + +func main() { + result1 := validator.IsIpPort("127.0.0.1:8080") + result2 := validator.IsIpPort("[0:0:0:0:0:0:0:1]:8080") + result3 := validator.IsIpPort(":8080") + result4 := validator.IsIpPort("::0:0:0:0:") + + fmt.Println(result1) + fmt.Println(result2) + fmt.Println(result3) + fmt.Println(result4) + + // Output: + // true + // true + // false + // false +} +``` + ### IsStrongPassword

验证字符串是否是强密码:(alpha(lower+upper) + number + special chars(!@#$%^&*()?><))。

diff --git a/docs/en/api/packages/validator.md b/docs/en/api/packages/validator.md index f2fdbd6..8abc25b 100644 --- a/docs/en/api/packages/validator.md +++ b/docs/en/api/packages/validator.md @@ -49,6 +49,7 @@ import ( - [IsIp](#IsIp) - [IsIpV4](#IsIpV4) - [IsIpV6](#IsIpV6) +- [IsIpPort](#IsIpPort) - [IsStrongPassword](#IsStrongPassword) - [IsUrl](#IsUrl) - [IsWeakPassword](#IsWeakPassword) @@ -992,6 +993,43 @@ func main() { } ``` +### IsIpPort + +

Check if the string is ip:port

+ +Signature: + +```go +func IsIpPort(str string) bool +``` + +Example:[Run](todo) + +```go +import ( + "fmt" + "github.com/duke-git/lancet/v2/validator" +) + +func main() { + result1 := validator.IsIpPort("127.0.0.1:8080") + result2 := validator.IsIpPort("[0:0:0:0:0:0:0:1]:8080") + result3 := validator.IsIpPort(":8080") + result4 := validator.IsIpPort("::0:0:0:0:") + + fmt.Println(result1) + fmt.Println(result2) + fmt.Println(result3) + fmt.Println(result4) + + // Output: + // true + // true + // false + // false +} +``` + ### IsStrongPassword

Check if the string is strong password (alpha(lower+upper) + number + special chars(!@#$%^&*()?gt<)).