优化代码
This commit is contained in:
parent
2a87ebdfd6
commit
bd7d20160a
|
@ -85,7 +85,7 @@ type HandleFn[T any] func(T)
|
|||
type HandlePipeFn[T any] func(HandleFn[T], T)
|
||||
|
||||
// HandlePipe 方便把功能写在其它包里
|
||||
func HandlePipe[T any](fns []HandlePipeFn[T], initial func(T)) HandleFn[T] {
|
||||
func HandlePipe[T any](initial func(T), fns ...HandlePipeFn[T]) HandleFn[T] {
|
||||
return slice.ReverseReduce(fns, func(next HandlePipeFn[T], f func(t T)) func(t T) {
|
||||
return func(t T) {
|
||||
next(f, t)
|
||||
|
|
|
@ -17,19 +17,12 @@ type DetailHandle struct {
|
|||
CommentRender plugins.CommentHtml
|
||||
Comments []models.Comments
|
||||
Post models.Posts
|
||||
Pipes []HandlePipeFn[*DetailHandle]
|
||||
}
|
||||
|
||||
func NewDetailHandle(handle *Handle) *DetailHandle {
|
||||
return &DetailHandle{Handle: handle}
|
||||
}
|
||||
|
||||
func (d *DetailHandle) Pipe(calls ...HandlePipeFn[*DetailHandle]) {
|
||||
HandlePipe[*DetailHandle](append(calls, d.Pipes...), func(d *DetailHandle) {
|
||||
d.Render()
|
||||
})(d)
|
||||
}
|
||||
|
||||
func (d *DetailHandle) BuildDetailData() (err error) {
|
||||
d.GinH["title"] = wpconfig.GetOption("blogname")
|
||||
err = d.CheckAndGetPost()
|
||||
|
|
|
@ -22,19 +22,12 @@ type IndexHandle struct {
|
|||
PageEle pagination.Elements
|
||||
TotalRows int
|
||||
PostsPlugins map[string]Plugin[models.Posts, *Handle]
|
||||
Pipes []HandlePipeFn[*IndexHandle]
|
||||
}
|
||||
|
||||
func NewIndexHandle(handle *Handle) *IndexHandle {
|
||||
return &IndexHandle{Handle: handle}
|
||||
}
|
||||
|
||||
func (i *IndexHandle) Pipe(calls ...HandlePipeFn[*IndexHandle]) {
|
||||
HandlePipe[*IndexHandle](append(calls, i.Pipes...), func(i *IndexHandle) {
|
||||
i.Render()
|
||||
})(i)
|
||||
}
|
||||
|
||||
func (i *IndexHandle) ParseIndex(parm *IndexParams) (err error) {
|
||||
i.Param = parm
|
||||
switch i.Scene {
|
||||
|
|
|
@ -28,16 +28,23 @@ var paginate = func() plugins.PageEle {
|
|||
return p
|
||||
}()
|
||||
|
||||
var detailPipe = common.HandlePipe(func(d *common.DetailHandle) {
|
||||
d.Render()
|
||||
}, detail)
|
||||
var indexPipe = common.HandlePipe(func(i *common.IndexHandle) {
|
||||
i.Render()
|
||||
}, index)
|
||||
|
||||
func Hook(h *common.Handle) {
|
||||
h.WidgetAreaData()
|
||||
h.GetPassword()
|
||||
h.HandleFns = append(h.HandleFns, calClass)
|
||||
h.GinH["HeaderImage"] = getHeaderImage(h.C)
|
||||
if h.Scene == constraints.Detail {
|
||||
common.NewDetailHandle(h).Pipe(detail)
|
||||
detailPipe(common.NewDetailHandle(h))
|
||||
return
|
||||
}
|
||||
common.NewIndexHandle(h).Pipe(index)
|
||||
indexPipe(common.NewIndexHandle(h))
|
||||
}
|
||||
|
||||
var pluginFns = func() map[string]common.Plugin[models.Posts, *common.Handle] {
|
||||
|
|
Loading…
Reference in New Issue
Block a user