feat: slug generate.

This commit is contained in:
tx7do
2023-10-31 07:05:48 +08:00
parent 5717d4aefe
commit 836f4e2461
5 changed files with 124 additions and 1 deletions

2
go.mod
View File

@@ -4,6 +4,7 @@ go 1.20
require (
github.com/google/uuid v1.4.0
github.com/gosimple/slug v1.13.1
github.com/sony/sonyflake v1.2.0
github.com/stretchr/testify v1.8.4
golang.org/x/crypto v0.14.0
@@ -11,6 +12,7 @@ require (
require (
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/gosimple/unidecode v1.0.1 // indirect
github.com/kr/pretty v0.3.1 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/rogpeppe/go-internal v1.10.0 // indirect

4
go.sum
View File

@@ -3,6 +3,10 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4=
github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/gosimple/slug v1.13.1 h1:bQ+kpX9Qa6tHRaK+fZR0A0M2Kd7Pa5eHPPsb1JpHD+Q=
github.com/gosimple/slug v1.13.1/go.mod h1:UiRaFH+GEilHstLUmcBgWcI42viBN7mAb818JrYOeFQ=
github.com/gosimple/unidecode v1.0.1 h1:hZzFTMMqSswvf0LBJZCZgThIZrpDHFXux9KeGmn6T/o=
github.com/gosimple/unidecode v1.0.1/go.mod h1:CP0Cr1Y1kogOtx0bJblKzsVWrqYaqfNOnHzpgWw4Awc=
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=

29
slug/slug.go Normal file
View File

@@ -0,0 +1,29 @@
package slug
import (
"github.com/gosimple/slug"
)
// Generate 生成短链接
func Generate(input string) string {
slug.Lowercase = true
return slug.MakeLang(input, "en")
}
// GenerateCaseSensitive 生成大小写敏感的短链接
func GenerateCaseSensitive(input string) string {
slug.Lowercase = false
return slug.MakeLang(input, "en")
}
// GenerateEnglish 生成英文短链接
func GenerateEnglish(input string) string {
slug.Lowercase = true
return slug.MakeLang(input, "en")
}
// GenerateGerman 生成德文短链接
func GenerateGerman(input string) string {
slug.Lowercase = true
return slug.MakeLang(input, "de")
}

88
slug/slug_test.go Normal file
View File

@@ -0,0 +1,88 @@
package slug
import (
"fmt"
"testing"
"github.com/gosimple/slug"
"github.com/stretchr/testify/assert"
)
func TestGoSimple(t *testing.T) {
// 俄文
text := slug.Make("Hellö Wörld хелло ворлд")
assert.Equal(t, text, "hello-world-khello-vorld")
fmt.Println(text)
// 繁体中文
someText := slug.Make("影師")
assert.Equal(t, someText, "ying-shi")
fmt.Println(someText)
// 简体中文
cnText := slug.Make("天下太平")
assert.Equal(t, cnText, "tian-xia-tai-ping")
fmt.Println(cnText)
// 英文
enText := slug.MakeLang("This & that", "en")
assert.Equal(t, enText, "this-and-that")
fmt.Println(enText)
// 德文
deText := slug.MakeLang("Diese & Dass", "de")
assert.Equal(t, deText, "diese-und-dass")
fmt.Println(deText)
// 保持大小写
slug.Lowercase = false
deUppercaseText := slug.MakeLang("Diese & Dass", "de")
assert.Equal(t, deUppercaseText, "Diese-und-Dass")
fmt.Println(deUppercaseText)
// 字符替换
slug.CustomSub = map[string]string{
"water": "sand",
}
textSub := slug.Make("water is hot")
assert.Equal(t, textSub, "sand-is-hot")
fmt.Println(textSub)
}
func TestGenerate(t *testing.T) {
// 俄文
text := Generate("Hellö Wörld хелло ворлд")
assert.Equal(t, text, "hello-world-khello-vorld")
fmt.Println(text)
// 繁体中文
someText := Generate("影師")
assert.Equal(t, someText, "ying-shi")
fmt.Println(someText)
// 简体中文
cnText := Generate("天下太平")
assert.Equal(t, cnText, "tian-xia-tai-ping")
fmt.Println(cnText)
// 英文
enText := GenerateEnglish("This & that")
assert.Equal(t, enText, "this-and-that")
fmt.Println(enText)
enText = GenerateCaseSensitive("This & That")
assert.Equal(t, enText, "This-and-That")
fmt.Println(enText)
// 德文
deText := GenerateGerman("Diese & Dass")
assert.Equal(t, deText, "diese-und-dass")
fmt.Println(deText)
slug.CustomSub = map[string]string{
"water": "sand",
}
textSub := Generate("water is hot")
assert.Equal(t, textSub, "sand-is-hot")
fmt.Println(textSub)
}

View File

@@ -1,4 +1,4 @@
git tag v1.1.3
git tag v1.1.4
git tag bank_card/v1.1.0
git tag entgo/v1.1.4
git tag geoip/v1.1.0