Skip to content

Commit

Permalink
refactor(scheme): simplify text decoder
Browse files Browse the repository at this point in the history
  • Loading branch information
macrat committed Dec 24, 2022
1 parent 6f0ed99 commit 960d4b9
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 14 deletions.
6 changes: 2 additions & 4 deletions internal/scheme/textdecode/locale_unix.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,5 @@ import (
"golang.org/x/text/encoding/unicode"
)

// localeDecoder in Unix OS always returns UTF8 decoder.
func localeDecoder() decoder {
return unicode.UTF8.NewDecoder()
}
// localeDecoder in Unix OS is an UTF8 decoder.
var localeDecoder decoder = unicode.UTF8.NewDecoder()
16 changes: 7 additions & 9 deletions internal/scheme/textdecode/locale_windows.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,11 @@ import (
"golang.org/x/text/encoding/unicode"
)

var (
windowsCodePages = map[uint32]encoding.Encoding{
// localeDecoder in Windows is a decoder for UTF8 or local charset that set by locale settings in OS.
var localeDecoder decoder

func init() {
enc, ok := map[uint32]encoding.Encoding{
1200: unicode.UTF16(unicode.LittleEndian, unicode.IgnoreBOM),
1201: unicode.UTF16(unicode.BigEndian, unicode.IgnoreBOM),
65001: unicode.UTF8,
Expand All @@ -41,15 +44,10 @@ var (

950: traditionalchinese.Big5,
54936: simplifiedchinese.GB18030,
}
)

// localeDecoder in Windows returns decoder for UTF8 or local charset that set by locale settings in OS.
func localeDecoder() decoder {
enc, ok := windowsCodePages[windows.GetACP()]
}[windows.GetACP()]
if !ok {
enc = unicode.UTF8
}

return utf8Override{enc.NewDecoder()}
localeDecoder = utf8Override{windowsEncoder}
}
2 changes: 1 addition & 1 deletion internal/scheme/textdecode/textdecode.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ type decoder interface {

// Bytes decodes []byte to string.
func Bytes(b []byte) (string, error) {
dec := localeDecoder()
dec := localeDecoder
b, dec = bomOverride(b, dec)
s, err := dec.Bytes(b)
if err != nil {
Expand Down

0 comments on commit 960d4b9

Please sign in to comment.