27 lines
380 B
Go
27 lines
380 B
Go
|
|
package command
|
||
|
|
|
||
|
|
type Recorder interface {
|
||
|
|
Record(CommandFn)
|
||
|
|
Apply(Buffer)
|
||
|
|
}
|
||
|
|
|
||
|
|
type recorder struct {
|
||
|
|
parts []CommandFn
|
||
|
|
}
|
||
|
|
|
||
|
|
func NewRecorder() Recorder {
|
||
|
|
return &recorder{
|
||
|
|
parts: make([]CommandFn, 0, 64),
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func (r recorder) Apply(cmd Buffer) {
|
||
|
|
for _, part := range r.parts {
|
||
|
|
part(cmd)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func (r *recorder) Record(cmd CommandFn) {
|
||
|
|
r.parts = append(r.parts, cmd)
|
||
|
|
}
|