Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ResolveCollisions ¶
func ResolveCollisions[T Item](items []T, cfg CollisionConfig)
ResolveCollisions assigns unique names to items with the same base name. Items are grouped by their current base name, and suffixes are assigned according to the collision config.
This is useful for batch processing where all items are known upfront.
Types ¶
type CollisionConfig ¶
type CollisionConfig struct {
// PaddingDigits specifies how many digits to use for suffix numbers (default: 2)
// Examples: 2 -> "-02", 3 -> "-003"
PaddingDigits int
// FirstWithSuffix determines whether the first item gets a suffix
// false (default): first="base", second="base-02", third="base-03"
// true: first="base-01", second="base-02", third="base-03"
FirstWithSuffix bool
}
CollisionConfig controls how name collisions are resolved.
func DefaultCollisionConfig ¶
func DefaultCollisionConfig() CollisionConfig
DefaultCollisionConfig returns the default configuration. - PaddingDigits: 2 (produces -02, -03, etc.) - FirstWithSuffix: false (first item has no suffix)
type NameReserver ¶
type NameReserver struct {
OutDir string
Config CollisionConfig
// contains filtered or unexported fields
}
NameReserver helps reserve unique names incrementally, checking both in-memory state and filesystem.
This is useful for processing items one-by-one where you need to check if files already exist on disk.
func NewNameReserver ¶
func NewNameReserver(outDir string, cfg CollisionConfig) *NameReserver
NewNameReserver creates a new name reserver for the given output directory.
func (*NameReserver) ReserveName ¶
func (r *NameReserver) ReserveName(base, ext string) (string, error)
ReserveName attempts to reserve a unique name for the given base and extension. It first tries the base name, then adds numeric suffixes until an available name is found. Returns the reserved name (including extension) or an error if no name could be found.