diff options
| author | Rob Pike <r@golang.org> | 2012-03-06 11:14:45 +1100 |
|---|---|---|
| committer | Rob Pike <r@golang.org> | 2012-03-06 11:14:45 +1100 |
| commit | d9832987ba95f8feb016fc5d22d77793659b94ef (patch) | |
| tree | f1c34b508ad79176cb83ef9ac146520360174f5c /src/pkg/unicode | |
| parent | 46031400d0c0745ef8e764a4872f5aaaa143d199 (diff) | |
| download | go-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.go | 13 | ||||
| -rw-r--r-- | src/pkg/unicode/utf8/utf8_test.go | 11 |
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 |
