mirror of
				https://github.com/gohugoio/hugo.git
				synced 2024-05-11 05:54:58 +00:00 
			
		
		
		
	@@ -364,9 +364,10 @@ func TestRenderString(t *testing.T) {
 | 
			
		||||
RSTART:{{ "**Bold Markdown**" | $p.RenderString }}:REND
 | 
			
		||||
RSTART:{{  "**Bold Block Markdown**" | $p.RenderString  $optBlock }}:REND
 | 
			
		||||
RSTART:{{  "/italic org mode/" | $p.RenderString  $optOrg }}:REND
 | 
			
		||||
RSTART:{{ "## Header2" | $p.RenderString }}:REND
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
`)
 | 
			
		||||
`, "_default/_markup/render-heading.html", "Hook Heading: {{ .Level }}")
 | 
			
		||||
 | 
			
		||||
	b.WithContent("p1.md", `---
 | 
			
		||||
title: "p1"
 | 
			
		||||
@@ -380,6 +381,7 @@ title: "p1"
 | 
			
		||||
RSTART:<strong>Bold Markdown</strong>:REND
 | 
			
		||||
RSTART:<p><strong>Bold Block Markdown</strong></p>
 | 
			
		||||
RSTART:<em>italic org mode</em>:REND
 | 
			
		||||
RSTART:Hook Heading: 2:REND
 | 
			
		||||
`)
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -604,6 +604,10 @@ func (p *pageState) RenderString(args ...interface{}) (template.HTML, error) {
 | 
			
		||||
		return "", err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if err = p.pageOutput.initRenderHooks(); err != nil {
 | 
			
		||||
		return "", err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	conv := p.getContentConverter()
 | 
			
		||||
	if opts.Markup != "" && opts.Markup != p.m.markup {
 | 
			
		||||
		var err error
 | 
			
		||||
 
 | 
			
		||||
@@ -96,24 +96,28 @@ func (o *pageOutput) initRenderHooks() error {
 | 
			
		||||
		return nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var initErr error
 | 
			
		||||
 | 
			
		||||
	o.cp.renderHooks.init.Do(func() {
 | 
			
		||||
		ps := o.cp.p
 | 
			
		||||
 | 
			
		||||
		c := ps.getContentConverter()
 | 
			
		||||
		if c == nil || !c.Supports(converter.FeatureRenderHooks) {
 | 
			
		||||
		return nil
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		h, err := ps.createRenderHooks(o.f)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
			initErr = err
 | 
			
		||||
		}
 | 
			
		||||
		if h == nil {
 | 
			
		||||
		return nil
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
	o.cp.renderHooks = h
 | 
			
		||||
		o.cp.renderHooks.hooks = h
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	return nil
 | 
			
		||||
	return initErr
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -77,6 +77,7 @@ func newPageContentOutput(p *pageState, po *pageOutput) (*pageContentOutput, err
 | 
			
		||||
		dependencyTracker: dependencyTracker,
 | 
			
		||||
		p:                 p,
 | 
			
		||||
		f:                 po.f,
 | 
			
		||||
		renderHooks:       &renderHooks{},
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	initContent := func() (err error) {
 | 
			
		||||
@@ -227,6 +228,11 @@ func newPageContentOutput(p *pageState, po *pageOutput) (*pageContentOutput, err
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type renderHooks struct {
 | 
			
		||||
	hooks *hooks.Renderers
 | 
			
		||||
	init  sync.Once
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// pageContentOutput represents the Page content for a given output format.
 | 
			
		||||
type pageContentOutput struct {
 | 
			
		||||
	f output.Format
 | 
			
		||||
@@ -244,8 +250,8 @@ type pageContentOutput struct {
 | 
			
		||||
	placeholdersEnabled     bool
 | 
			
		||||
	placeholdersEnabledInit sync.Once
 | 
			
		||||
 | 
			
		||||
	// May be nil.
 | 
			
		||||
	renderHooks *hooks.Renderers
 | 
			
		||||
	renderHooks *renderHooks
 | 
			
		||||
 | 
			
		||||
	// Set if there are more than one output format variant
 | 
			
		||||
	renderHooksHaveVariants bool // TODO(bep) reimplement this in another way, consolidate with shortcodes
 | 
			
		||||
 | 
			
		||||
@@ -285,6 +291,7 @@ func (p *pageContentOutput) Reset() {
 | 
			
		||||
	}
 | 
			
		||||
	p.initMain.Reset()
 | 
			
		||||
	p.initPlain.Reset()
 | 
			
		||||
	p.renderHooks = &renderHooks{}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (p *pageContentOutput) Content() (interface{}, error) {
 | 
			
		||||
@@ -377,7 +384,7 @@ func (cp *pageContentOutput) renderContentWithConverter(c converter.Converter, c
 | 
			
		||||
		converter.RenderContext{
 | 
			
		||||
			Src:         content,
 | 
			
		||||
			RenderTOC:   renderTOC,
 | 
			
		||||
			RenderHooks: cp.renderHooks,
 | 
			
		||||
			RenderHooks: cp.renderHooks.hooks,
 | 
			
		||||
		})
 | 
			
		||||
 | 
			
		||||
	if err == nil {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user