mirror of
https://github.com/gohugoio/hugo.git
synced 2024-05-11 05:54:58 +00:00
Moving transformation on a per-page level
This commit is contained in:
@ -539,7 +539,6 @@ func (s *Site) NewNode() *Node {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *Site) render(d interface{}, out string, layouts ...string) (err error) {
|
func (s *Site) render(d interface{}, out string, layouts ...string) (err error) {
|
||||||
reader, writer := io.Pipe()
|
|
||||||
|
|
||||||
layout := s.findFirstLayout(layouts...)
|
layout := s.findFirstLayout(layouts...)
|
||||||
if layout == "" {
|
if layout == "" {
|
||||||
@ -548,14 +547,35 @@ func (s *Site) render(d interface{}, out string, layouts ...string) (err error)
|
|||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
section := ""
|
||||||
|
page, ok := d.(*Page)
|
||||||
|
if ok {
|
||||||
|
section = page.Section
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Println("Section is:", section)
|
||||||
|
|
||||||
|
transformer := transform.NewChain(
|
||||||
|
&transform.AbsURL{BaseURL: s.Config.BaseUrl},
|
||||||
|
&transform.NavActive{Section: section},
|
||||||
|
)
|
||||||
|
|
||||||
|
renderReader, renderWriter := io.Pipe()
|
||||||
go func() {
|
go func() {
|
||||||
err = s.renderThing(d, layout, writer)
|
err = s.renderThing(d, layout, renderWriter)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
return s.WritePublic(out, reader)
|
trReader, trWriter := io.Pipe()
|
||||||
|
go func() {
|
||||||
|
transformer.Apply(trWriter, renderReader)
|
||||||
|
trWriter.Close()
|
||||||
|
}()
|
||||||
|
|
||||||
|
return s.WritePublic(out, trReader)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Site) findFirstLayout(layouts ...string) (layout string) {
|
func (s *Site) findFirstLayout(layouts ...string) (layout string) {
|
||||||
@ -590,24 +610,12 @@ func (s *Site) initTarget() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Site) WritePublic(path string, content io.Reader) (err error) {
|
func (s *Site) WritePublic(path string, reader io.Reader) (err error) {
|
||||||
s.initTarget()
|
s.initTarget()
|
||||||
|
|
||||||
if s.Config.Verbose {
|
if s.Config.Verbose {
|
||||||
fmt.Println(path)
|
fmt.Println(path)
|
||||||
}
|
}
|
||||||
|
|
||||||
if s.Transformer == nil {
|
|
||||||
s.Transformer = transform.NewChain(
|
|
||||||
&transform.AbsURL{BaseURL: s.Config.BaseUrl},
|
|
||||||
&transform.NavActive{Section: "tbd"},
|
|
||||||
)
|
|
||||||
}
|
|
||||||
reader, writer := io.Pipe()
|
|
||||||
go func() {
|
|
||||||
s.Transformer.Apply(writer, content)
|
|
||||||
writer.Close()
|
|
||||||
}()
|
|
||||||
return s.Target.Publish(path, reader)
|
return s.Target.Publish(path, reader)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user