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)
- [ChunkString](#chunkstring)
- [RuneLength](#runelength)
- [PascalCase](#pascalcase)
- [CamelCase](#camelcase)
- [KebabCase](#kebabcase)
- [SnakeCase](#snakecase)
- [Words](#words)
- [Capitalize](#capitalize)
- [Elipse](#elipse)
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.
```go
str := lo.PascalCase("heLLO")
str := lo.Capitalize("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

View File

@@ -1,13 +1,14 @@
package lo
import (
"golang.org/x/text/cases"
"golang.org/x/text/language"
"math/rand"
"regexp"
"strings"
"unicode"
"unicode/utf8"
"golang.org/x/text/cases"
"golang.org/x/text/language"
)
var (
@@ -162,3 +163,15 @@ func Words(str string) []string {
func Capitalize(str string) string {
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))
}