mirror of
https://github.com/XRPLF/clio.git
synced 2025-11-19 19:25:53 +00:00
~I will add pre-commit hook later if I find a good one~ Found a nice repo, but it is no longer maintained: https://github.com/dnephin/pre-commit-golang So, I implemented the check as a local hook.
38 lines
622 B
Go
38 lines
622 B
Go
package ammo_provider
|
|
|
|
import (
|
|
"bufio"
|
|
"io"
|
|
"strings"
|
|
"sync/atomic"
|
|
)
|
|
|
|
type AmmoProvider struct {
|
|
ammo []string
|
|
currentBullet atomic.Uint64
|
|
}
|
|
|
|
func (ap *AmmoProvider) getIndex() uint64 {
|
|
result := ap.currentBullet.Add(1)
|
|
return result % uint64(len(ap.ammo))
|
|
}
|
|
|
|
func (ap *AmmoProvider) GetBullet() string {
|
|
for {
|
|
res := ap.ammo[ap.getIndex()]
|
|
if !strings.HasPrefix(res, "#") {
|
|
return res
|
|
}
|
|
}
|
|
}
|
|
|
|
func New(reader io.Reader) *AmmoProvider {
|
|
scanner := bufio.NewScanner(reader)
|
|
var ammo []string
|
|
for scanner.Scan() {
|
|
ammo = append(ammo, scanner.Text())
|
|
}
|
|
|
|
return &AmmoProvider{ammo: ammo}
|
|
}
|