Add Incremental* Generators

This commit is contained in:
Dan Jones 2025-03-13 15:22:54 -05:00
commit 67f472a2c6
2 changed files with 99 additions and 1 deletions

View file

@ -2,6 +2,7 @@ package nomino
import (
"errors"
"strconv"
"time"
"github.com/google/uuid"
@ -85,7 +86,7 @@ func FormattedTime(t time.Time, f string) Generator {
}
}
// FileTimestamp is the default format for WithTimestampUTC and WithTimeUTC
// FileTimestampNoTZ is the default format for WithTimestampUTC and WithTimeUTC
const FileTimestampNoTZ string = "2006-01-02_03-05-06"
// TimestampUTC generates a date and time for the current time in UTC without a timezone in the format.
@ -97,3 +98,28 @@ func TimestampUTC() Generator {
func TimeUTC(t time.Time) Generator {
return FormattedTime(t.UTC(), FileTimestampNoTZ)
}
// Incremental generates a name that is a series of integers starting at 0
func Incremental() Generator {
return IncrementalWithStartAndStep(0, 1)
}
// IncrementalWithStart generates a name that is a series of integers starting at the specified number
func IncrementalWithStart(start int) Generator {
return IncrementalWithStartAndStep(start, 1)
}
// IncrementalWithStep generates a name that is a series of integers, starting at 0, and increasing the specified number each time
func IncrementalWithStep(step int) Generator {
return IncrementalWithStartAndStep(0, step)
}
// InrementalWithStartAndStep generates a name that is a series of integers, starting at the specified number, and increasing the specified step each time
func IncrementalWithStartAndStep(start, step int) Generator {
next := start
return func() (string, error) {
out := strconv.Itoa(next)
next += step
return out, nil
}
}