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  }