Add separator option

This commit is contained in:
Dan Jones 2025-03-11 16:42:39 -05:00
commit 4b509d31bb
6 changed files with 37 additions and 8 deletions

View file

@ -5,12 +5,14 @@ type Config struct {
prefix string prefix string
suffix string suffix string
extension string extension string
separator string
generator Generator generator Generator
} }
func NewConfig(options ...Option) Config { func NewConfig(options ...Option) Config {
conf := Config{ conf := Config{
extension: ".txt", extension: ".txt",
separator: "_",
generator: uuidGen, generator: uuidGen,
} }
for _, opt := range options { for _, opt := range options {

View file

@ -18,5 +18,5 @@ func TestNewConf(t *testing.T) {
func TestNewConfWithOpts(t *testing.T) { func TestNewConfWithOpts(t *testing.T) {
c := NewConfig(WithoutExtension(), WithPrefix("foobar")) c := NewConfig(WithoutExtension(), WithPrefix("foobar"))
assert.Equal(t, "", c.extension) assert.Equal(t, "", c.extension)
assert.Equal(t, "foobar_", c.prefix) assert.Equal(t, "foobar", c.prefix)
} }

11
make.go
View file

@ -11,5 +11,16 @@ func Make(conf Config) (string, error) {
return "", err return "", err
} }
if conf.prefix != "" {
conf.prefix = conf.prefix + conf.separator
}
if conf.original != "" {
conf.original = conf.separator + conf.original
}
if conf.suffix != "" {
conf.suffix = conf.separator + conf.suffix
}
return fmt.Sprintf("%s%s%s%s%s", conf.prefix, name, conf.original, conf.suffix, conf.extension), nil return fmt.Sprintf("%s%s%s%s%s", conf.prefix, name, conf.original, conf.suffix, conf.extension), nil
} }

View file

@ -20,6 +20,7 @@ func TestMake(t *testing.T) {
{"with original", []Option{WithOriginal("file")}, "abc_file.txt"}, {"with original", []Option{WithOriginal("file")}, "abc_file.txt"},
{"without ext", []Option{WithoutExtension()}, "abc"}, {"without ext", []Option{WithoutExtension()}, "abc"},
{"with ext", []Option{WithExtension("xml")}, "abc.xml"}, {"with ext", []Option{WithExtension("xml")}, "abc.xml"},
{"with sep", []Option{WithOriginal("file"), WithSeparator("---")}, "abc---file.txt"},
{ {
"with all", "with all",
[]Option{ []Option{
@ -27,8 +28,9 @@ func TestMake(t *testing.T) {
WithOriginal("file"), WithOriginal("file"),
WithSuffix("suff"), WithSuffix("suff"),
WithExtension("svg"), WithExtension("svg"),
WithSeparator("+"),
}, },
"pre_abc_file_suff.svg", "pre+abc+file+suff.svg",
}, },
} }

View file

@ -9,21 +9,21 @@ type Option func(c *Config)
// This will be included in the generated name after the generated string and before the suffix. // This will be included in the generated name after the generated string and before the suffix.
func WithOriginal(o string) Option { func WithOriginal(o string) Option {
return func(c *Config) { return func(c *Config) {
c.original = "_" + o c.original = o
} }
} }
// WithPrefix sets a prefix for the generated name. // WithPrefix sets a prefix for the generated name.
func WithPrefix(p string) Option { func WithPrefix(p string) Option {
return func(c *Config) { return func(c *Config) {
c.prefix = p + "_" c.prefix = p
} }
} }
// WithSuffix sets a suffix for the generated name. It will be included in the base name before the suffix. // WithSuffix sets a suffix for the generated name. It will be included in the base name before the suffix.
func WithSuffix(s string) Option { func WithSuffix(s string) Option {
return func(c *Config) { return func(c *Config) {
c.suffix = "_" + s c.suffix = s
} }
} }
@ -40,3 +40,10 @@ func WithExtension(ext string) Option {
c.extension = "." + strings.TrimPrefix(ext, ".") c.extension = "." + strings.TrimPrefix(ext, ".")
} }
} }
// WithSeparator sets the separator for the generated filename.
func WithSeparator(sep string) Option {
return func(c *Config) {
c.separator = sep
}
}

View file

@ -10,21 +10,21 @@ func TestWithOriginal(t *testing.T) {
var c Config var c Config
name := "foobar" name := "foobar"
WithOriginal(name)(&c) WithOriginal(name)(&c)
assert.Equal(t, "_"+name, c.original) assert.Equal(t, name, c.original)
} }
func TestWithPrefix(t *testing.T) { func TestWithPrefix(t *testing.T) {
var c Config var c Config
pref := "draft" pref := "draft"
WithPrefix(pref)(&c) WithPrefix(pref)(&c)
assert.Equal(t, pref+"_", c.prefix) assert.Equal(t, pref, c.prefix)
} }
func TestWithSuffix(t *testing.T) { func TestWithSuffix(t *testing.T) {
var c Config var c Config
suff := "out" suff := "out"
WithSuffix(suff)(&c) WithSuffix(suff)(&c)
assert.Equal(t, "_"+suff, c.suffix) assert.Equal(t, suff, c.suffix)
} }
func TestWithoutExtension(t *testing.T) { func TestWithoutExtension(t *testing.T) {
@ -39,3 +39,10 @@ func TestWithExtension(t *testing.T) {
WithExtension(ext)(&c) WithExtension(ext)(&c)
assert.Equal(t, "."+ext, c.extension) assert.Equal(t, "."+ext, c.extension)
} }
func TestWithSeparator(t *testing.T) {
var c Config
sep := "---"
WithSeparator(sep)(&c)
assert.Equal(t, sep, c.separator)
}