2025-08-30 22:00:31 +03:00
|
|
|
package script
|
|
|
|
|
|
|
|
import (
|
|
|
|
"bufio"
|
|
|
|
"io"
|
|
|
|
"os"
|
|
|
|
"strings"
|
|
|
|
)
|
|
|
|
|
|
|
|
// StdinReader reads from stdin
|
|
|
|
type StdinReader struct {
|
|
|
|
scanner bufio.Scanner
|
|
|
|
}
|
|
|
|
|
|
|
|
func NewStdinReader() *StdinReader {
|
|
|
|
return &StdinReader{
|
|
|
|
scanner: *bufio.NewScanner(os.Stdin),
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// Read reads from stdin until \n character
|
|
|
|
// then splits result at "," separator and returns
|
|
|
|
// the resulting slice.
|
|
|
|
// It returns EOF when nothing left to read.
|
2025-08-31 13:38:54 +03:00
|
|
|
func (s *StdinReader) Read() ([]string, error) {
|
2025-08-30 22:00:31 +03:00
|
|
|
if !s.scanner.Scan() {
|
|
|
|
err := s.scanner.Err()
|
|
|
|
if err == nil {
|
|
|
|
return nil, io.EOF
|
|
|
|
}
|
|
|
|
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
return strings.Split(s.scanner.Text(), ","), nil
|
|
|
|
}
|