diff options
author | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2016-03-08 20:56:24 +0100 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2016-03-09 11:06:40 +0100 |
commit | 9896cd0030da75bf6acab14dad0a7f78472ceff9 (patch) | |
tree | a736154aab9317f830b0bd2605cf98bd96224690 /hugolib/shortcode.go | |
parent | 866176be971c460d05a7b3b09b1034eb9a25ec56 (diff) |
Add reference to parent shortcode
Fixes #1936
Diffstat (limited to 'hugolib/shortcode.go')
-rw-r--r-- | hugolib/shortcode.go | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/hugolib/shortcode.go b/hugolib/shortcode.go index 4cd1db87b..578093210 100644 --- a/hugolib/shortcode.go +++ b/hugolib/shortcode.go @@ -34,6 +34,7 @@ type ShortcodeWithPage struct { Params interface{} Inner template.HTML Page *Page + Parent *ShortcodeWithPage IsNamedParams bool } @@ -189,7 +190,7 @@ const innerNewlineRegexp = "\n" const innerCleanupRegexp = `\A<p>(.*)</p>\n\z` const innerCleanupExpand = "$1" -func renderShortcode(sc shortcode, p *Page, t tpl.Template) string { +func renderShortcode(sc shortcode, parent *ShortcodeWithPage, p *Page, t tpl.Template) string { tmpl := getShortcodeTemplate(sc.name, t) if tmpl == nil { @@ -197,7 +198,7 @@ func renderShortcode(sc shortcode, p *Page, t tpl.Template) string { return "" } - data := &ShortcodeWithPage{Params: sc.params, Page: p} + data := &ShortcodeWithPage{Params: sc.params, Page: p, Parent: parent} if sc.params != nil { data.IsNamedParams = reflect.TypeOf(sc.params).Kind() == reflect.Map } @@ -209,7 +210,7 @@ func renderShortcode(sc shortcode, p *Page, t tpl.Template) string { case string: inner += innerData.(string) case shortcode: - inner += renderShortcode(innerData.(shortcode), p, t) + inner += renderShortcode(innerData.(shortcode), data, p, t) default: jww.ERROR.Printf("Illegal state on shortcode rendering of '%s' in page %s. Illegal type in inner data: %s ", sc.name, p.BaseFileName(), reflect.TypeOf(innerData)) @@ -271,7 +272,7 @@ func extractAndRenderShortcodes(stringToParse string, p *Page, t tpl.Template) ( // need to have something to replace with renderedShortcodes[key] = "" } else { - renderedShortcodes[key] = renderShortcode(sc, p, t) + renderedShortcodes[key] = renderShortcode(sc, nil, p, t) } } |