feat: adding Elipse (#470)

This commit is contained in:
Samuel Berthe
2024-06-27 15:42:03 +02:00
committed by GitHub
parent 3da41985ce
commit e5e4f028e4
3 changed files with 50 additions and 4 deletions

View File

@@ -152,6 +152,13 @@ Supported helpers for strings:
- [Substring](#substring) - [Substring](#substring)
- [ChunkString](#chunkstring) - [ChunkString](#chunkstring)
- [RuneLength](#runelength) - [RuneLength](#runelength)
- [PascalCase](#pascalcase)
- [CamelCase](#camelcase)
- [KebabCase](#kebabcase)
- [SnakeCase](#snakecase)
- [Words](#words)
- [Capitalize](#capitalize)
- [Elipse](#elipse)
Supported helpers for tuples: Supported helpers for tuples:
@@ -1395,11 +1402,24 @@ str := lo.Words("helloWorld")
Converts the first character of string to upper case and the remaining to lower case. Converts the first character of string to upper case and the remaining to lower case.
```go ```go
str := lo.PascalCase("heLLO") str := lo.Capitalize("heLLO")
// Hello // Hello
``` ```
[[play](https://go.dev/play/p/jBIJ_OFtFYp)] ### Elipse
Truncates a string to a specified length and appends an ellipsis if truncated.
```go
str := lo.Elipse("Lorem Ipsum", 5)
// Lo...
str := lo.Elipse("Lorem Ipsum", 100)
// Lorem Ipsum
str := lo.Elipse("Lorem Ipsum", 3)
// ...
```
### T2 -> T9 ### T2 -> T9

View File

@@ -1,13 +1,14 @@
package lo package lo
import ( import (
"golang.org/x/text/cases"
"golang.org/x/text/language"
"math/rand" "math/rand"
"regexp" "regexp"
"strings" "strings"
"unicode" "unicode"
"unicode/utf8" "unicode/utf8"
"golang.org/x/text/cases"
"golang.org/x/text/language"
) )
var ( var (
@@ -162,3 +163,15 @@ func Words(str string) []string {
func Capitalize(str string) string { func Capitalize(str string) string {
return cases.Title(language.English).String(str) return cases.Title(language.English).String(str)
} }
// Elipse truncates a string to a specified length and appends an ellipsis if truncated.
func Elipse(str string, length int) string {
if len(str) > length {
if len(str) < 3 || length < 3 {
return "..."
}
return str[0:length-3] + "..."
}
return str
}

View File

@@ -483,3 +483,16 @@ func TestCapitalize(t *testing.T) {
}) })
} }
} }
func TestElipse(t *testing.T) {
t.Parallel()
is := assert.New(t)
is.Equal("12345", Elipse("12345", 5))
is.Equal("1...", Elipse("12345", 4))
is.Equal("12345", Elipse("12345", 6))
is.Equal("12345", Elipse("12345", 10))
is.Equal("...", Elipse("12345", 3))
is.Equal("...", Elipse("12345", 2))
is.Equal("...", Elipse("12345", -1))
}