diff options
author | Peter Smit <peter@smitmail.eu> | 2014-12-22 11:01:52 +0200 |
---|---|---|
committer | Peter Smit <peter@smitmail.eu> | 2014-12-22 11:01:52 +0200 |
commit | 3af757ed77b5c8763b81f913ec6981671fdd6f26 (patch) | |
tree | f003b458aedc56b731bc5b1f84c2f8ffc81db997 /modules/base | |
parent | 0f77ad219c1f455005fd507c4fa7396ebe1b1bc5 (diff) | |
download | gitea-3af757ed77b5c8763b81f913ec6981671fdd6f26.tar.gz gitea-3af757ed77b5c8763b81f913ec6981671fdd6f26.zip |
Replace mahonia with the standard functions in the Golang Sub-repositories
Diffstat (limited to 'modules/base')
-rw-r--r-- | modules/base/template.go | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/modules/base/template.go b/modules/base/template.go index 462269aa4e..9107f3e129 100644 --- a/modules/base/template.go +++ b/modules/base/template.go @@ -7,14 +7,15 @@ package base import ( "container/list" "encoding/json" - "errors" "fmt" "html/template" "runtime" "strings" "time" - "github.com/gogits/gogs/modules/mahonia" + "golang.org/x/net/html/charset" + "golang.org/x/text/transform" + "github.com/gogits/gogs/modules/setting" "github.com/saintfish/chardet" ) @@ -54,20 +55,30 @@ func DetectEncoding(content []byte) (string, error) { } func ToUtf8WithErr(content []byte) (error, string) { - charset, err := DetectEncoding(content) + charsetLabel, err := DetectEncoding(content) if err != nil { return err, "" } - if charset == "utf8" { + if charsetLabel == "utf8" { return nil, string(content) } - decoder := mahonia.NewDecoder(charset) - if decoder != nil { - return nil, decoder.ConvertString(string(content)) + encoding, _ := charset.Lookup(charsetLabel) + + if encoding == nil { + return fmt.Errorf("unknow char decoder %s", charsetLabel), string(content) } - return errors.New("unknow char decoder"), string(content) + + result, n, err := transform.String(encoding.NewDecoder(), string(content)) + + // If there is an error, we concatenate the nicely decoded part and the + // original left over. This way we won't loose data. + if err != nil { + result = result + string(content[n:]) + } + + return err, result } func ToUtf8(content string) string { |