testmark-go

iterators.go

package testmark

// HunkIterator provides safe iteration over document hunks.
type HunkIterator struct {
	doc   *Document
	index int
}

// Next advances to the next hunk and returns true if successful.
func (it *HunkIterator) Next() bool {
	return it.index < len(it.doc.hunks)
}

// Hunk returns the current hunk. Only valid after Next() returns true.
func (it *HunkIterator) Hunk() *Hunk {
	if it.index >= len(it.doc.hunks) {
		return nil
	}
	hunk := it.doc.hunks[it.index]
	it.index++
	return hunk.hunk
}

// DirIterator provides safe iteration over directory entries.
type DirIterator struct {
	entries []*DirEntry
	index   int
}

// Next advances to the next entry and returns true if successful.
func (it *DirIterator) Next() bool {
	return it.index < len(it.entries)
}

// Entry returns the current entry. Only valid after Next() returns true.
func (it *DirIterator) Entry() *DirEntry {
	if it.index >= len(it.entries) {
		return nil
	}
	entry := it.entries[it.index]
	it.index++
	return entry
}

v2/iterators.go · 1003 B · 13b63c6f85