guesstimate/server/internal/diffsync/option.go

35 lines
477 B
Go

package diffsync
type Option struct {
Patcher Patcher
Differ Differ
}
func WithPatcher(p Patcher) OptionFunc {
return func(opt *Option) {
opt.Patcher = p
}
}
func WithDiffer(d Differ) OptionFunc {
return func(opt *Option) {
opt.Differ = d
}
}
type OptionFunc func(*Option)
func DefaultOption() *Option {
return MergeOption(
&Option{},
)
}
func MergeOption(opt *Option, funcs ...OptionFunc) *Option {
for _, fn := range funcs {
fn(opt)
}
return opt
}