summaryrefslogtreecommitdiff
path: root/src/pkg/strings/reader.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/pkg/strings/reader.go')
-rw-r--r--src/pkg/strings/reader.go92
1 files changed, 0 insertions, 92 deletions
diff --git a/src/pkg/strings/reader.go b/src/pkg/strings/reader.go
deleted file mode 100644
index 8423f7e45..000000000
--- a/src/pkg/strings/reader.go
+++ /dev/null
@@ -1,92 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package strings
-
-import (
- "os"
- "utf8"
-)
-
-// A Reader implements the io.Reader, io.ByteScanner, and
-// io.RuneScanner interfaces by reading from a string.
-type Reader struct {
- s string
- i int // current reading index
- prevRune int // index of previous rune; or < 0
-}
-
-// Len returns the number of bytes of the unread portion of the
-// string.
-func (r *Reader) Len() int {
- return len(r.s) - r.i
-}
-
-func (r *Reader) Read(b []byte) (n int, err os.Error) {
- if r.i >= len(r.s) {
- return 0, os.EOF
- }
- n = copy(b, r.s[r.i:])
- r.i += n
- r.prevRune = -1
- return
-}
-
-func (r *Reader) ReadByte() (b byte, err os.Error) {
- if r.i >= len(r.s) {
- return 0, os.EOF
- }
- b = r.s[r.i]
- r.i++
- r.prevRune = -1
- return
-}
-
-
-// UnreadByte moves the reading position back by one byte.
-// It is an error to call UnreadByte if nothing has been
-// read yet.
-func (r *Reader) UnreadByte() os.Error {
- if r.i <= 0 {
- return os.NewError("strings.Reader: at beginning of string")
- }
- r.i--
- r.prevRune = -1
- return nil
-}
-
-// ReadRune reads and returns the next UTF-8-encoded
-// Unicode code point from the buffer.
-// If no bytes are available, the error returned is os.EOF.
-// If the bytes are an erroneous UTF-8 encoding, it
-// consumes one byte and returns U+FFFD, 1.
-func (r *Reader) ReadRune() (rune int, size int, err os.Error) {
- if r.i >= len(r.s) {
- return 0, 0, os.EOF
- }
- r.prevRune = r.i
- if c := r.s[r.i]; c < utf8.RuneSelf {
- r.i++
- return int(c), 1, nil
- }
- rune, size = utf8.DecodeRuneInString(r.s[r.i:])
- r.i += size
- return
-}
-
-// UnreadRune causes the next call to ReadRune to return the same rune
-// as the previous call to ReadRune.
-// The last method called on r must have been ReadRune.
-func (r *Reader) UnreadRune() os.Error {
- if r.prevRune < 0 {
- return os.NewError("strings.Reader: previous operation was not ReadRune")
- }
- r.i = r.prevRune
- r.prevRune = -1
- return nil
-}
-
-// NewReader returns a new Reader reading from s.
-// It is similar to bytes.NewBufferString but more efficient and read-only.
-func NewReader(s string) *Reader { return &Reader{s, 0, -1} }