summaryrefslogtreecommitdiffstats
path: root/models/git_diff.go
diff options
context:
space:
mode:
authorPeter Smit <peter@smitmail.eu>2014-12-22 11:01:52 +0200
committerPeter Smit <peter@smitmail.eu>2014-12-22 11:01:52 +0200
commit3af757ed77b5c8763b81f913ec6981671fdd6f26 (patch)
treef003b458aedc56b731bc5b1f84c2f8ffc81db997 /models/git_diff.go
parent0f77ad219c1f455005fd507c4fa7396ebe1b1bc5 (diff)
downloadgitea-3af757ed77b5c8763b81f913ec6981671fdd6f26.tar.gz
gitea-3af757ed77b5c8763b81f913ec6981671fdd6f26.zip
Replace mahonia with the standard functions in the Golang Sub-repositories
Diffstat (limited to 'models/git_diff.go')
-rw-r--r--models/git_diff.go18
1 files changed, 12 insertions, 6 deletions
diff --git a/models/git_diff.go b/models/git_diff.go
index 4bbe3c0e8f..7e91626f1d 100644
--- a/models/git_diff.go
+++ b/models/git_diff.go
@@ -14,12 +14,14 @@ import (
"strings"
"time"
+ "golang.org/x/net/html/charset"
+ "golang.org/x/text/transform"
+
"github.com/Unknwon/com"
"github.com/gogits/gogs/modules/base"
"github.com/gogits/gogs/modules/git"
"github.com/gogits/gogs/modules/log"
- "github.com/gogits/gogs/modules/mahonia"
"github.com/gogits/gogs/modules/process"
)
@@ -192,14 +194,18 @@ func ParsePatch(pid int64, maxlines int, cmd *exec.Cmd, reader io.Reader) (*Diff
}
// FIXME: use first 30 lines to detect file encoding.
- charset, err := base.DetectEncoding(buf.Bytes())
- if charset != "utf8" && err == nil {
- decoder := mahonia.NewDecoder(charset)
- if decoder != nil {
+ charsetLabel, err := base.DetectEncoding(buf.Bytes())
+ if charsetLabel != "utf8" && err == nil {
+ encoding, _ := charset.Lookup(charsetLabel)
+
+ if encoding != nil {
+ d := encoding.NewDecoder()
for _, f := range diff.Files {
for _, sec := range f.Sections {
for _, l := range sec.Lines {
- l.Content = decoder.ConvertString(l.Content)
+ if c, _, err := transform.String(d, l.Content); err == nil {
+ l.Content = c
+ }
}
}
}