func (s *Site) renderAndWritePage(name string, dest string, d interface{}, layouts ...string) error { renderBuffer := bp.GetBuffer() defer bp.PutBuffer(renderBuffer) err := s.render(name, d, renderBuffer, layouts...) outBuffer := bp.GetBuffer() defer bp.PutBuffer(outBuffer) transformLinks := transform.NewEmptyTransforms() if viper.GetBool("CanonifyUrls") { absURL, err := transform.AbsURL(viper.GetString("BaseUrl")) if err != nil { return err } transformLinks = append(transformLinks, absURL...) } if viper.GetBool("watch") && !viper.GetBool("DisableLiveReload") { transformLinks = append(transformLinks, transform.LiveReloadInject) } transformer := transform.NewChain(transformLinks...) transformer.Apply(outBuffer, renderBuffer) if err == nil { if err = s.WriteDestPage(dest, outBuffer); err != nil { return err } } return err }
func (s *Site) renderAndWritePage(name string, dest string, d interface{}, layouts ...string) error { renderBuffer := bp.GetBuffer() defer bp.PutBuffer(renderBuffer) err := s.render(name, d, renderBuffer, layouts...) outBuffer := bp.GetBuffer() defer bp.PutBuffer(outBuffer) transformLinks := transform.NewEmptyTransforms() if viper.GetBool("RelativeURLs") || viper.GetBool("CanonifyURLs") { transformLinks = append(transformLinks, transform.AbsURL) } if s.Running() && viper.GetBool("watch") && !viper.GetBool("DisableLiveReload") { transformLinks = append(transformLinks, transform.LiveReloadInject) } var path []byte if viper.GetBool("RelativeURLs") { translated, err := s.PageTarget().(target.OptionalTranslator).TranslateRelative(dest) if err != nil { return err } path = []byte(helpers.GetDottedRelativePath(translated)) } else if viper.GetBool("CanonifyURLs") { s := viper.GetString("BaseURL") if !strings.HasSuffix(s, "/") { s += "/" } path = []byte(s) } transformer := transform.NewChain(transformLinks...) transformer.Apply(outBuffer, renderBuffer, path) if outBuffer.Len() == 0 { jww.WARN.Printf("%q is rendered empty\n", dest) if dest == "/" { jww.ERROR.Println("=============================================================") jww.ERROR.Println("Your rendered home page is blank: /index.html is zero-length") jww.ERROR.Println(" * Did you specify a theme on the command-line or in your") jww.ERROR.Printf(" %q file? (Current theme: %q)\n", filepath.Base(viper.ConfigFileUsed()), viper.GetString("Theme")) if !viper.GetBool("Verbose") { jww.ERROR.Println(" * For more debugging information, run \"hugo -v\"") } jww.ERROR.Println("=============================================================") } } if err == nil { if err = s.WriteDestPage(dest, outBuffer); err != nil { return err } } return err }
func (s *Site) render(d interface{}, out string, layouts ...string) (err error) { layout, found := s.findFirstLayout(layouts...) if found == false { jww.WARN.Printf("Unable to locate layout: %s\n", layouts) return } transformLinks := transform.NewEmptyTransforms() if viper.GetBool("CanonifyUrls") { absURL, err := transform.AbsURL(viper.GetString("BaseUrl")) if err != nil { return err } transformLinks = append(transformLinks, absURL...) } if viper.GetBool("watch") && !viper.GetBool("DisableLiveReload") { transformLinks = append(transformLinks, transform.LiveReloadInject) } transformer := transform.NewChain(transformLinks...) var renderBuffer *bytes.Buffer if strings.HasSuffix(out, ".xml") { renderBuffer = s.NewXMLBuffer() } else { renderBuffer = new(bytes.Buffer) } err = s.renderThing(d, layout, renderBuffer) if err != nil { // Behavior here should be dependent on if running in server or watch mode. jww.ERROR.Println(fmt.Errorf("Rendering error: %v", err)) if !s.Running() { os.Exit(-1) } } var outBuffer = new(bytes.Buffer) if strings.HasSuffix(out, ".xml") { outBuffer = renderBuffer } else { transformer.Apply(outBuffer, renderBuffer) } return s.WritePublic(out, outBuffer) }
func (s *Site) render(d interface{}, out string, layouts ...string) (err error) { layout := s.findFirstLayout(layouts...) if layout == "" { if s.Config.Verbose { fmt.Printf("Unable to locate layout: %s\n", layouts) } return } transformLinks := transform.NewEmptyTransforms() if s.Config.CanonifyUrls { absURL, err := transform.AbsURL(s.Config.BaseUrl) if err != nil { return err } transformLinks = append(transformLinks, absURL...) } transformer := transform.NewChain(transformLinks...) var renderBuffer *bytes.Buffer if strings.HasSuffix(out, ".xml") { renderBuffer = s.NewXMLBuffer() } else { renderBuffer = new(bytes.Buffer) } err = s.renderThing(d, layout, renderBuffer) if err != nil { // Behavior here should be dependent on if running in server or watch mode. fmt.Println(fmt.Errorf("Rendering error: %v", err)) if !s.Running() { os.Exit(-1) } } var outBuffer = new(bytes.Buffer) if strings.HasSuffix(out, ".xml") { outBuffer = renderBuffer } else { transformer.Apply(outBuffer, renderBuffer) } return s.WritePublic(out, outBuffer) }
func (s *Site) renderAndWritePage(name string, dest string, d interface{}, layouts ...string) error { renderBuffer := bp.GetBuffer() defer bp.PutBuffer(renderBuffer) err := s.render(name, d, renderBuffer, layouts...) outBuffer := bp.GetBuffer() defer bp.PutBuffer(outBuffer) transformLinks := transform.NewEmptyTransforms() if viper.GetBool("RelativeURLs") || viper.GetBool("CanonifyURLs") { transformLinks = append(transformLinks, transform.AbsURL) } if s.Running() && viper.GetBool("watch") && !viper.GetBool("DisableLiveReload") { transformLinks = append(transformLinks, transform.LiveReloadInject) } var path []byte if viper.GetBool("RelativeURLs") { translated, err := s.PageTarget().(target.OptionalTranslator).TranslateRelative(dest) if err != nil { return err } path = []byte(helpers.GetDottedRelativePath(translated)) } else if viper.GetBool("CanonifyURLs") { s := viper.GetString("BaseURL") if !strings.HasSuffix(s, "/") { s += "/" } path = []byte(s) } transformer := transform.NewChain(transformLinks...) transformer.Apply(outBuffer, renderBuffer, path) if err == nil { if err = s.WriteDestPage(dest, outBuffer); err != nil { return err } } return err }
func (s *Site) renderPage(name string, d interface{}, layouts ...string) (io.Reader, error) { renderBuffer := new(bytes.Buffer) err := s.render(name, d, renderBuffer, layouts...) var outBuffer = new(bytes.Buffer) transformLinks := transform.NewEmptyTransforms() if viper.GetBool("CanonifyUrls") { absURL, err := transform.AbsURL(viper.GetString("BaseUrl")) if err != nil { return nil, err } transformLinks = append(transformLinks, absURL...) } if viper.GetBool("watch") && !viper.GetBool("DisableLiveReload") { transformLinks = append(transformLinks, transform.LiveReloadInject) } transformer := transform.NewChain(transformLinks...) transformer.Apply(outBuffer, renderBuffer) return outBuffer, err }