Add branch iterator #66

Merged
jezell merged 9 commits from branch-iterator into master 2014-04-26 13:25:26 -05:00
3 changed files with 10 additions and 6 deletions
Showing only changes of commit 27bea93efe - Show all commits

View File

@ -32,7 +32,7 @@ func TestBranchIterator(t *testing.T) {
checkFatal(t, err) checkFatal(t, err)
list := make([]string, 0) list := make([]string, 0)
for ref := range ReferenceNameIteratorChannel(i) { for ref := range NameIteratorChannel(i) {
list = append(list, ref) list = append(list, ref)
} }

View File

@ -185,12 +185,16 @@ func (v *Reference) Free() {
C.git_reference_free(v.ptr) C.git_reference_free(v.ptr)
} }
type ReferenceIterator interface { type NameIterator interface {
Next() (*Reference, error)
NextName() (string, error) NextName() (string, error)
Free() Free()
} }
type ReferenceIterator interface {
NameIterator
Next() (*Reference, error)
}
type gitReferenceIterator struct { type gitReferenceIterator struct {
ptr *C.git_reference_iterator ptr *C.git_reference_iterator
} }
@ -255,7 +259,7 @@ func (v *gitReferenceIterator) NextName() (string, error) {
// Create a channel from the iterator. You can use range on the // Create a channel from the iterator. You can use range on the
// returned channel to iterate over all the references names. The channel // returned channel to iterate over all the references names. The channel
// will be closed in case any error is found. // will be closed in case any error is found.
func ReferenceNameIteratorChannel(v ReferenceIterator) <-chan string { func NameIteratorChannel(v NameIterator) <-chan string {
ch := make(chan string) ch := make(chan string)
go func() { go func() {
defer close(ch) defer close(ch)

View File

@ -138,7 +138,7 @@ func TestReferenceIterator(t *testing.T) {
// test the channel iteration // test the channel iteration
list = []string{} list = []string{}
iter, err = repo.NewReferenceIterator() iter, err = repo.NewReferenceIterator()
for name := range ReferenceNameIteratorChannel(iter) { for name := range NameIteratorChannel(iter) {
list = append(list, name) list = append(list, name)
} }
@ -152,7 +152,7 @@ func TestReferenceIterator(t *testing.T) {
} }
list = []string{} list = []string{}
for name := range ReferenceNameIteratorChannel(iter) { for name := range NameIteratorChannel(iter) {
list = append(list, name) list = append(list, name)
} }