diff options
Diffstat (limited to 'file.go')
-rw-r--r-- | file.go | 25 |
1 files changed, 18 insertions, 7 deletions
@@ -18,24 +18,35 @@ func newFile(name string, b *Blob) *File { } // Contents returns the contents of a file as a string. -func (f *File) Contents() string { +func (f *File) Contents() (content string, err error) { + reader, err := f.Reader() + if err != nil { + return "", err + } + defer close(reader, &err) + buf := new(bytes.Buffer) - buf.ReadFrom(f.Reader()) + buf.ReadFrom(reader) - return buf.String() + return buf.String(), nil } // Lines returns a slice of lines from the contents of a file, stripping // all end of line characters. If the last line is empty (does not end // in an end of line), it is also stripped. -func (f *File) Lines() []string { - splits := strings.Split(f.Contents(), "\n") +func (f *File) Lines() ([]string, error) { + content, err := f.Contents() + if err != nil { + return nil, err + } + + splits := strings.Split(content, "\n") // remove the last line if it is empty if splits[len(splits)-1] == "" { - return splits[:len(splits)-1] + return splits[:len(splits)-1], nil } - return splits + return splits, nil } type FileIter struct { |