diff options
author | Máximo Cuadros <mcuadros@gmail.com> | 2016-02-25 10:18:48 +0100 |
---|---|---|
committer | Máximo Cuadros <mcuadros@gmail.com> | 2016-02-25 10:18:48 +0100 |
commit | 5bc563727ffa798caee3b007c366eb66c3d69caa (patch) | |
tree | 6107f49405bb605793f1bcd7ef4961ceadcb11e9 /file.go | |
parent | 07ca1ac7f3058ea6d3274a01973541fb84782f5e (diff) | |
parent | 0d999e1db6cd8736ab697de8ce848fa3a5274b9f (diff) | |
download | go-git-5bc563727ffa798caee3b007c366eb66c3d69caa.tar.gz |
Merge pull request #34 from scjalliance/object-reader-writer
Refactor to use core.ObjectReader and core.ObjectWriter
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 { |