mirror of
https://github.com/MichaelMure/git-bug.git
synced 2024-12-15 10:12:06 +03:00
32 lines
675 B
Go
32 lines
675 B
Go
|
package text
|
||
|
|
||
|
import (
|
||
|
"strings"
|
||
|
"unicode"
|
||
|
|
||
|
"golang.org/x/text/runes"
|
||
|
"golang.org/x/text/transform"
|
||
|
)
|
||
|
|
||
|
func Cleanup(text string) (string, error) {
|
||
|
// windows new line, Github, really ?
|
||
|
text = strings.Replace(text, "\r\n", "\n", -1)
|
||
|
|
||
|
// remove all unicode control characters except
|
||
|
// '\n', '\r' and '\t'
|
||
|
t := runes.Remove(runes.Predicate(func(r rune) bool {
|
||
|
switch r {
|
||
|
case '\r', '\n', '\t':
|
||
|
return false
|
||
|
}
|
||
|
return unicode.IsControl(r)
|
||
|
}))
|
||
|
sanitized, _, err := transform.String(t, text)
|
||
|
if err != nil {
|
||
|
return "", err
|
||
|
}
|
||
|
|
||
|
// trim extra new line not displayed in the github UI but still present in the data
|
||
|
return strings.TrimSpace(sanitized), nil
|
||
|
}
|