func()

in cmd/test2json2gha/github.go [168:212]


func (r *urlEncodeNewlineReader) Read(p []byte) (n int, err error) {
	if len(p) == 0 {
		return 0, nil
	}

	peekSize := len(p)
	if peekSize > r.rdr.Size() {
		peekSize = r.rdr.Size()
	}

	peeked, err := r.rdr.Peek(peekSize)
	if err != nil {
		if !errors.Is(err, io.EOF) {
			return 0, fmt.Errorf("failed to peek: %w", err)
		}
		if len(peeked) == 0 {
			return 0, io.EOF
		}
	}

	// Pre-allocate output with the best-case size (same as peeked length)
	output := make([]byte, 0, len(peeked))
	consumed := 0 // Track the number of bytes consumed from peeked

	for i := range peeked {
		if peeked[i] == '\n' {
			output = append(output, '%', '0', 'A')
		} else {
			output = append(output, peeked[i])
		}

		consumed++
		if len(output) >= len(p) {
			break
		}
	}

	// Consume the bytes we processed from the underlying reader
	_, err = r.rdr.Discard(consumed)
	if err != nil {
		return 0, err
	}

	return copy(p, output), nil
}