summaryrefslogtreecommitdiffstats
path: root/hugolib/shortcode.go
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2016-03-08 20:56:24 +0100
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2016-03-09 11:06:40 +0100
commit9896cd0030da75bf6acab14dad0a7f78472ceff9 (patch)
treea736154aab9317f830b0bd2605cf98bd96224690 /hugolib/shortcode.go
parent866176be971c460d05a7b3b09b1034eb9a25ec56 (diff)
Add reference to parent shortcode
Fixes #1936
Diffstat (limited to 'hugolib/shortcode.go')
-rw-r--r--hugolib/shortcode.go9
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)
}
}