github.com/sandwich-go/boost@v1.3.29/misc/xtemplate/gen_options_optiongen.go (about) 1 // Code generated by optiongen. DO NOT EDIT. 2 // optiongen: github.com/timestee/optiongen 3 4 package xtemplate 5 6 // Options should use NewOptions to initialize it 7 type Options struct { 8 // annotation@Name(comment="指定模板的名称") 9 Name string 10 // annotation@FileName(comment="文件名称,若不为空,则会生成对应的文件,若文件为 .go 文件,则会格式化") 11 FileName string 12 // annotation@Filers(comment="在生成指定文件或返回模板填充后数据前,指定过滤器,可以对数据进行二次加工") 13 Filers []Filter 14 } 15 16 // NewOptions new Options 17 func NewOptions(opts ...Option) *Options { 18 cc := newDefaultOptions() 19 for _, opt := range opts { 20 opt(cc) 21 } 22 if watchDogOptions != nil { 23 watchDogOptions(cc) 24 } 25 return cc 26 } 27 28 // ApplyOption apply multiple new option 29 func (cc *Options) ApplyOption(opts ...Option) { 30 for _, opt := range opts { 31 opt(cc) 32 } 33 } 34 35 // Option option func 36 type Option func(cc *Options) 37 38 // WithOptionName 指定模板的名称 39 func WithOptionName(v string) Option { 40 return func(cc *Options) { 41 cc.Name = v 42 } 43 } 44 45 // WithOptionFileName 文件名称,若不为空,则会生成对应的文件,若文件为 .go 文件,则会格式化 46 func WithOptionFileName(v string) Option { 47 return func(cc *Options) { 48 cc.FileName = v 49 } 50 } 51 52 // WithOptionFilers 在生成指定文件或返回模板填充后数据前,指定过滤器,可以对数据进行二次加工 53 func WithOptionFilers(v ...Filter) Option { 54 return func(cc *Options) { 55 cc.Filers = v 56 } 57 } 58 59 // InstallOptionsWatchDog the installed func will called when NewOptions called 60 func InstallOptionsWatchDog(dog func(cc *Options)) { watchDogOptions = dog } 61 62 // watchDogOptions global watch dog 63 var watchDogOptions func(cc *Options) 64 65 // newDefaultOptions new default Options 66 func newDefaultOptions() *Options { 67 cc := &Options{} 68 69 for _, opt := range [...]Option{ 70 WithOptionName("xtemplate"), 71 WithOptionFileName(""), 72 WithOptionFilers(nil...), 73 } { 74 opt(cc) 75 } 76 77 return cc 78 } 79 80 // all getter func 81 func (cc *Options) GetName() string { return cc.Name } 82 func (cc *Options) GetFileName() string { return cc.FileName } 83 func (cc *Options) GetFilers() []Filter { return cc.Filers } 84 85 // OptionsVisitor visitor interface for Options 86 type OptionsVisitor interface { 87 GetName() string 88 GetFileName() string 89 GetFilers() []Filter 90 } 91 92 // OptionsInterface visitor + ApplyOption interface for Options 93 type OptionsInterface interface { 94 OptionsVisitor 95 ApplyOption(...Option) 96 }