✨ Add Incremental* Generators
This commit is contained in:
parent
28803e6a28
commit
67f472a2c6
2 changed files with 99 additions and 1 deletions
|
|
@ -2,6 +2,7 @@ package nomino
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/google/uuid"
|
"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"
|
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.
|
// 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 {
|
func TimeUTC(t time.Time) Generator {
|
||||||
return FormattedTime(t.UTC(), FileTimestampNoTZ)
|
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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -18,3 +18,75 @@ func ExampleWithGenerator_custom_generator() {
|
||||||
// hello.txt
|
// hello.txt
|
||||||
// hello
|
// hello
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ExampleIncremental() {
|
||||||
|
conf := NewConfig(WithPrefix("foo"), WithGenerator(Incremental()))
|
||||||
|
|
||||||
|
str, _ := Make(conf)
|
||||||
|
fmt.Println(str)
|
||||||
|
|
||||||
|
str, _ = Make(conf)
|
||||||
|
fmt.Println(str)
|
||||||
|
|
||||||
|
str, _ = Make(conf)
|
||||||
|
fmt.Println(str)
|
||||||
|
|
||||||
|
// Output:
|
||||||
|
// foo_0.txt
|
||||||
|
// foo_1.txt
|
||||||
|
// foo_2.txt
|
||||||
|
}
|
||||||
|
|
||||||
|
func ExampleIncrementalWithStart() {
|
||||||
|
conf := NewConfig(WithPrefix("foo"), WithGenerator(IncrementalWithStart(42)))
|
||||||
|
|
||||||
|
str, _ := Make(conf)
|
||||||
|
fmt.Println(str)
|
||||||
|
|
||||||
|
str, _ = Make(conf)
|
||||||
|
fmt.Println(str)
|
||||||
|
|
||||||
|
str, _ = Make(conf)
|
||||||
|
fmt.Println(str)
|
||||||
|
|
||||||
|
// Output:
|
||||||
|
// foo_42.txt
|
||||||
|
// foo_43.txt
|
||||||
|
// foo_44.txt
|
||||||
|
}
|
||||||
|
|
||||||
|
func ExampleIncrementalWithStep() {
|
||||||
|
conf := NewConfig(WithPrefix("foo"), WithGenerator(IncrementalWithStep(2)))
|
||||||
|
|
||||||
|
str, _ := Make(conf)
|
||||||
|
fmt.Println(str)
|
||||||
|
|
||||||
|
str, _ = Make(conf)
|
||||||
|
fmt.Println(str)
|
||||||
|
|
||||||
|
str, _ = Make(conf)
|
||||||
|
fmt.Println(str)
|
||||||
|
|
||||||
|
// Output:
|
||||||
|
// foo_0.txt
|
||||||
|
// foo_2.txt
|
||||||
|
// foo_4.txt
|
||||||
|
}
|
||||||
|
|
||||||
|
func ExampleIncrementalWithStartAndStep() {
|
||||||
|
conf := NewConfig(WithPrefix("foo"), WithGenerator(IncrementalWithStartAndStep(42, 2)))
|
||||||
|
|
||||||
|
str, _ := Make(conf)
|
||||||
|
fmt.Println(str)
|
||||||
|
|
||||||
|
str, _ = Make(conf)
|
||||||
|
fmt.Println(str)
|
||||||
|
|
||||||
|
str, _ = Make(conf)
|
||||||
|
fmt.Println(str)
|
||||||
|
|
||||||
|
// Output:
|
||||||
|
// foo_42.txt
|
||||||
|
// foo_44.txt
|
||||||
|
// foo_46.txt
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue