1
0
mirror of https://github.com/golang/go synced 2024-11-12 00:50:24 -07:00

unicode/utf8: remove dependence on unicode.

The dependency was there only to pull in two constants.
Now we define them locally and verify equality in the test.

R=golang-dev, bradfitz
CC=golang-dev
https://golang.org/cl/5754046
This commit is contained in:
Rob Pike 2012-03-06 11:14:45 +11:00
parent 46031400d0
commit d9832987ba
2 changed files with 19 additions and 5 deletions

View File

@ -6,13 +6,16 @@
// UTF-8. It includes functions to translate between runes and UTF-8 byte sequences.
package utf8
import "unicode" // only needed for a couple of constants
// The conditions RuneError==unicode.ReplacementChar and
// MaxRune==unicode.MaxRune are verified in the tests.
// Defining them locally avoids this package depending on package unicode.
// Numbers fundamental to the encoding.
const (
RuneError = unicode.ReplacementChar // the "error" Rune or "replacement character".
RuneSelf = 0x80 // characters below Runeself are represented as themselves in a single byte.
UTFMax = 4 // maximum number of bytes of a UTF-8 encoded Unicode character.
RuneError = '\uFFFD' // the "error" Rune or "Unicode replacement character"
RuneSelf = 0x80 // characters below Runeself are represented as themselves in a single byte.
MaxRune = '\U0010FFFF' // Maximum valid Unicode code point.
UTFMax = 4 // maximum number of bytes of a UTF-8 encoded Unicode character.
)
const (
@ -309,7 +312,7 @@ func EncodeRune(p []byte, r rune) int {
return 2
}
if uint32(r) > unicode.MaxRune {
if uint32(r) > MaxRune {
r = RuneError
}

View File

@ -7,9 +7,20 @@ package utf8_test
import (
"bytes"
"testing"
"unicode"
. "unicode/utf8"
)
// Validate the constants redefined from unicode.
func init() {
if MaxRune != unicode.MaxRune {
panic("utf8.MaxRune is wrong")
}
if RuneError != unicode.ReplacementChar {
panic("utf8.RuneError is wrong")
}
}
type Utf8Map struct {
r rune
str string