27 lines
509 B
Go
27 lines
509 B
Go
|
package path
|
||
|
|
||
|
import "strings"
|
||
|
|
||
|
// ShortenPath removes the last but one path components to fit into maxLen
|
||
|
func ShortenPath(path string, maxLen int) string {
|
||
|
if len(path) <= maxLen {
|
||
|
return path
|
||
|
}
|
||
|
|
||
|
res := ""
|
||
|
parts := strings.SplitAfter(path, "/")
|
||
|
curLen := len(parts[len(parts)-1]) // count length of last part for start
|
||
|
|
||
|
for _, part := range parts[:len(parts)-1] {
|
||
|
curLen += len(part)
|
||
|
if curLen > maxLen {
|
||
|
res += ".../"
|
||
|
break
|
||
|
}
|
||
|
res += part
|
||
|
}
|
||
|
|
||
|
res += parts[len(parts)-1]
|
||
|
return res
|
||
|
}
|