github.com/shogo82148/std@v1.22.1-0.20240327122250-4e474527810c/strings/reader.go (about)

     1  // Copyright 2009 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package strings
     6  
     7  import (
     8  	"github.com/shogo82148/std/io"
     9  )
    10  
    11  // Readerは、文字列から読み取りを行うことで、 [io.Reader] 、[io.ReaderAt] 、 [io.ByteReader] 、 [io.ByteScanner] 、
    12  // [io.RuneReader] 、 [io.RuneScanner] 、 [io.Seeker] 、および [io.WriterTo] インターフェースを実装します。
    13  // Readerのゼロ値は、空の文字列のReaderのように動作します。
    14  type Reader struct {
    15  	s        string
    16  	i        int64
    17  	prevRune int
    18  }
    19  
    20  // Lenは、文字列の未読部分のバイト数を返します。
    21  func (r *Reader) Len() int
    22  
    23  // Sizeは、基礎となる文字列の元の長さを返します。
    24  // Sizeは、 [Reader.ReadAt] を介して読み取ることができるバイト数です。
    25  // 返される値は常に同じであり、他のメソッドの呼び出しに影響を受けません。
    26  func (r *Reader) Size() int64
    27  
    28  // Readは、 [io.Reader] インターフェースを実装します。
    29  func (r *Reader) Read(b []byte) (n int, err error)
    30  
    31  // ReadAtは、 [io.ReaderAt] インターフェースを実装します。
    32  func (r *Reader) ReadAt(b []byte, off int64) (n int, err error)
    33  
    34  // ReadByteは、 [io.ByteReader] インターフェースを実装します。
    35  func (r *Reader) ReadByte() (byte, error)
    36  
    37  // UnreadByteは、 [io.ByteScanner] インターフェースを実装します。
    38  func (r *Reader) UnreadByte() error
    39  
    40  // ReadRuneは、[io.RuneReader] インターフェースを実装します。
    41  func (r *Reader) ReadRune() (ch rune, size int, err error)
    42  
    43  // UnreadRuneは、 [io.RuneScanner] インターフェースを実装します。
    44  func (r *Reader) UnreadRune() error
    45  
    46  // Seekは、 [io.Seeker] インターフェースを実装します。
    47  func (r *Reader) Seek(offset int64, whence int) (int64, error)
    48  
    49  // WriteToは、 [io.WriterTo] インターフェースを実装します。
    50  func (r *Reader) WriteTo(w io.Writer) (n int64, err error)
    51  
    52  // Resetは、 [Reader] をsから読み取るようにリセットします。
    53  func (r *Reader) Reset(s string)
    54  
    55  // NewReaderは、sから読み取る新しい [Reader] を返します。
    56  // [bytes.NewBufferString] に似ていますが、より効率的で書き込み不可能です。
    57  func NewReader(s string) *Reader