diff --git a/parse/parse.go b/parse/parse.go index 7bde510..95e6710 100644 --- a/parse/parse.go +++ b/parse/parse.go @@ -2,7 +2,6 @@ package parse import ( "bufio" - "io" "strconv" "github.com/mediocregopher/ginger/types" @@ -19,11 +18,10 @@ import ( // double-quote has already been read off. Ginger strings are wrapped with " and // are allowed to have newlines literal in them. In all other respects they are // the same as go strings. -func ReadString(r io.Reader) (types.Str, error) { - buf := bufio.NewReader(r) +func ReadString(r *bufio.Reader) (types.Str, error) { str := types.Str("\"") for { - piece, err := buf.ReadBytes('"') + piece, err := r.ReadBytes('"') if err != nil { return "", err } diff --git a/parse/parse.test b/parse/parse.test index d59e3a5..f2d96ed 100755 Binary files a/parse/parse.test and b/parse/parse.test differ diff --git a/parse/parse_test.go b/parse/parse_test.go index 1eef42d..4a0efe6 100644 --- a/parse/parse_test.go +++ b/parse/parse_test.go @@ -2,6 +2,7 @@ package parse import ( "bytes" + "bufio" . "testing" "github.com/mediocregopher/ginger/types" @@ -18,8 +19,9 @@ func TestReadString(t *T) { for input, output := range m { buf := bytes.NewBufferString(input) buf.ReadByte() + buf2 := bufio.NewReader(buf) - parseOut, err := ReadString(buf) + parseOut, err := ReadString(buf2) if err != nil { t.Fatal(err) }