Some checks failed
CI / Run tests and lints (push) Failing after 29s
CI / Build CLI docs (push) Has been skipped
CI / Run Playwright end-to-end tests (mysql) (push) Failing after 3s
CI / Run Playwright end-to-end tests (postgres) (push) Failing after 2s
CI / Run Playwright end-to-end tests (sqlite) (push) Failing after 3s
CodeQL / Analyze (go) (push) Failing after 4s
CodeQL / Analyze (javascript) (push) Failing after 3s
Docker Image Scanners / scanners (push) Failing after 4s
Synchronize Issue Labels / Synchronize Issue Labels (push) Has been skipped
CI / Run end-to-end tests (postgres) (push) Failing after 19s
CI / Run end-to-end tests (sqlite) (push) Failing after 2s
CI / Run Playwright end-to-end tests (cockroach) (push) Failing after 2s
CI / Draft newsletter (push) Has been skipped
CI / Generate release (push) Has been skipped
CI / Pending approval Slack notification (push) Has been skipped
CI / Send newsletter (push) Has been skipped
22 lines
493 B
Go
22 lines
493 B
Go
// Copyright © 2023 Ory Corp
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package stringsx
|
|
|
|
import "unicode/utf8"
|
|
|
|
// TruncateByteLen returns string truncated at the end with the length specified
|
|
func TruncateByteLen(s string, length int) string {
|
|
if length <= 0 || len(s) <= length {
|
|
return s
|
|
}
|
|
|
|
res := s[:length]
|
|
|
|
// in case we cut in the middle of an utf8 rune, we have to remove the last byte as well until it fits
|
|
for !utf8.ValidString(res) {
|
|
res = res[:len(res)-1]
|
|
}
|
|
return res
|
|
}
|