shithub: hugo

Download patch

ref: 1021714449a05ef85b2fdfaf65b354cbdee44f23
parent: 6f069e549b869c976cb6576a64812df5e7b7c809
author: Bjørn Erik Pedersen <[email protected]>
date: Fri Dec 21 04:51:15 EST 2018

hugolib: Add .Name as a shortcode variable

Fixes #5546

--- a/docs/content/en/variables/shortcodes.md
+++ b/docs/content/en/variables/shortcodes.md
@@ -20,6 +20,9 @@
 
 [Shortcodes][shortcodes] have access to parameters delimited in the shortcode declaration via [`.Get`][getfunction], page- and site-level variables, and also the following shortcode-specific fields:
 
+.Name
+: Shortcode name.
+
 .Ordinal
 : Zero-based ordinal in relation to its parent. If the parent is the page itself, this ordinal will represent the position of this shortcode in the page content.
 
--- a/hugolib/shortcode.go
+++ b/hugolib/shortcode.go
@@ -58,6 +58,7 @@
 	Inner         template.HTML
 	Page          *PageWithoutContent
 	Parent        *ShortcodeWithPage
+	Name          string
 	IsNamedParams bool
 
 	// Zero-based ordinal in relation to its parent. If the parent is the page itself,
@@ -401,7 +402,7 @@
 		return "", nil
 	}
 
-	data := &ShortcodeWithPage{Ordinal: sc.ordinal, posOffset: sc.pos, Params: sc.params, Page: p, Parent: parent}
+	data := &ShortcodeWithPage{Ordinal: sc.ordinal, posOffset: sc.pos, Params: sc.params, Page: p, Parent: parent, Name: sc.name}
 	if sc.params != nil {
 		data.IsNamedParams = reflect.TypeOf(sc.params).Kind() == reflect.Map
 	}
--- a/hugolib/shortcode_test.go
+++ b/hugolib/shortcode_test.go
@@ -1027,7 +1027,7 @@
 
 }
 
-func TestShortcodePosition(t *testing.T) {
+func TestShortcodeVariables(t *testing.T) {
 	t.Parallel()
 	assert := require.New(t)
 
@@ -1042,6 +1042,7 @@
    {{< s1 >}}
 
 `).WithTemplatesAdded("layouts/shortcodes/s1.html", `
+Name: {{ .Name }}
 {{ with .Position }}
 File: {{ .Filename }}
 Offset: {{ .Offset }}
@@ -1059,6 +1060,7 @@
 		filepath.FromSlash("File: content/page.md"),
 		"Line: 7", "Column: 4", "Offset: 40",
 		filepath.FromSlash("String: \"content/page.md:7:4\""),
+		"Name: s1",
 	)
 
 }