aboutsummaryrefslogtreecommitdiff
path: root/src/pkg/unicode
diff options
context:
space:
mode:
authorRob Pike <r@golang.org>2012-03-06 11:14:45 +1100
committerRob Pike <r@golang.org>2012-03-06 11:14:45 +1100
commitd9832987ba95f8feb016fc5d22d77793659b94ef (patch)
treef1c34b508ad79176cb83ef9ac146520360174f5c /src/pkg/unicode
parent46031400d0c0745ef8e764a4872f5aaaa143d199 (diff)
downloadgo-d9832987ba95f8feb016fc5d22d77793659b94ef.tar.xz
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
Diffstat (limited to 'src/pkg/unicode')
-rw-r--r--src/pkg/unicode/utf8/utf8.go13
-rw-r--r--src/pkg/unicode/utf8/utf8_test.go11
2 files changed, 19 insertions, 5 deletions
diff --git a/src/pkg/unicode/utf8/utf8.go b/src/pkg/unicode/utf8/utf8.go
index 631533a5a3..57ea19e96d 100644
--- a/src/pkg/unicode/utf8/utf8.go
+++ b/src/pkg/unicode/utf8/utf8.go
@@ -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
}
diff --git a/src/pkg/unicode/utf8/utf8_test.go b/src/pkg/unicode/utf8/utf8_test.go
index 63514265bb..abf5a468ea 100644
--- a/src/pkg/unicode/utf8/utf8_test.go
+++ b/src/pkg/unicode/utf8/utf8_test.go
@@ -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