shithub: hugo

Download patch

ref: e68e7ef96fb7a83319f6d828799524f85c75c5eb
parent: eeaf343a148dc1a0585fc63b8f9789add57bd0ab
author: Austin Ziegler <[email protected]>
date: Fri Sep 26 19:44:09 EDT 2014

Configure footnote rendering.

- The config file can provide FootnoteAnchorPrefix, which will be used
  by blackfriday when rendering to HTML. A value of `q:` has the effect
  of making the anchor for a footnote `[^footie]` be `fn:q:footie`. The
  default is `""`.

- The config file can provide FootnoteReturnLinkContents, which will be
  used by blackfriday when rendering to HTML. A value of `^` has the
  effect of making the return link be `^` instead of `[return]`.

--- a/commands/hugo.go
+++ b/commands/hugo.go
@@ -121,6 +121,8 @@
 	viper.SetDefault("PygmentsUseClasses", false)
 	viper.SetDefault("DisableLiveReload", false)
 	viper.SetDefault("PluralizeListTitles", true)
+	viper.SetDefault("FootnoteAnchorPrefix", "")
+	viper.SetDefault("FootnoteReturnLinkContents", "")
 
 	if hugoCmdV.PersistentFlags().Lookup("buildDrafts").Changed {
 		viper.Set("BuildDrafts", Draft)
--- a/docs/content/overview/configuration.md
+++ b/docs/content/overview/configuration.md
@@ -40,6 +40,7 @@
     builddrafts = false
     baseurl = "http://yoursite.example.com/"
     canonifyurls = true
+
     [indexes]
        category = "categories"
        tag = "tags"
@@ -49,6 +50,7 @@
     ---
     baseurl: "http://yoursite.example.com/"
     title: "Yoyodyne Widget Blogging"
+    footnotereturnlinkcontents: "↩"
     permalinks:
       post: /:year/:month/:title/
     params:
--- a/hugolib/page.go
+++ b/hugolib/page.go
@@ -671,7 +671,12 @@
 	return nil
 }
 
-func markdownRender(content []byte) []byte {
+func getHtmlRenderer(withTOC bool) blackfriday.Renderer {
+	renderParameters := blackfriday.HtmlRendererParameters{
+		FootnoteAnchorPrefix:       viper.GetString("FootnoteAnchorPrefix"),
+		FootnoteReturnLinkContents: viper.GetString("FootnoteReturnLinkContents"),
+	}
+
 	htmlFlags := 0
 	htmlFlags |= blackfriday.HTML_USE_XHTML
 	htmlFlags |= blackfriday.HTML_USE_SMARTYPANTS
@@ -678,42 +683,30 @@
 	htmlFlags |= blackfriday.HTML_SMARTYPANTS_FRACTIONS
 	htmlFlags |= blackfriday.HTML_SMARTYPANTS_LATEX_DASHES
 	htmlFlags |= blackfriday.HTML_FOOTNOTE_RETURN_LINKS
-	renderer := blackfriday.HtmlRenderer(htmlFlags, "", "")
 
-	extensions := 0
-	extensions |= blackfriday.EXTENSION_NO_INTRA_EMPHASIS
-	extensions |= blackfriday.EXTENSION_TABLES
-	extensions |= blackfriday.EXTENSION_FENCED_CODE
-	extensions |= blackfriday.EXTENSION_AUTOLINK
-	extensions |= blackfriday.EXTENSION_STRIKETHROUGH
-	extensions |= blackfriday.EXTENSION_SPACE_HEADERS
-	extensions |= blackfriday.EXTENSION_FOOTNOTES
-	extensions |= blackfriday.EXTENSION_HEADER_IDS
+	if withTOC {
+		htmlFlags |= blackfriday.HTML_TOC
+	}
 
-	return blackfriday.Markdown(content, renderer, extensions)
+	return blackfriday.HtmlRendererWithParameters(htmlFlags, "", "", renderParameters)
 }
 
-func markdownRenderWithTOC(content []byte) []byte {
-	htmlFlags := 0
-	htmlFlags |= blackfriday.HTML_TOC
-	htmlFlags |= blackfriday.HTML_USE_XHTML
-	htmlFlags |= blackfriday.HTML_USE_SMARTYPANTS
-	htmlFlags |= blackfriday.HTML_SMARTYPANTS_FRACTIONS
-	htmlFlags |= blackfriday.HTML_SMARTYPANTS_LATEX_DASHES
-	htmlFlags |= blackfriday.HTML_FOOTNOTE_RETURN_LINKS
-	renderer := blackfriday.HtmlRenderer(htmlFlags, "", "")
+func getMarkdownExtensions() int {
+	return 0 | blackfriday.EXTENSION_NO_INTRA_EMPHASIS |
+		blackfriday.EXTENSION_TABLES | blackfriday.EXTENSION_FENCED_CODE |
+		blackfriday.EXTENSION_AUTOLINK | blackfriday.EXTENSION_STRIKETHROUGH |
+		blackfriday.EXTENSION_SPACE_HEADERS | blackfriday.EXTENSION_FOOTNOTES |
+		blackfriday.EXTENSION_HEADER_IDS
+}
 
-	extensions := 0
-	extensions |= blackfriday.EXTENSION_NO_INTRA_EMPHASIS
-	extensions |= blackfriday.EXTENSION_TABLES
-	extensions |= blackfriday.EXTENSION_FENCED_CODE
-	extensions |= blackfriday.EXTENSION_AUTOLINK
-	extensions |= blackfriday.EXTENSION_STRIKETHROUGH
-	extensions |= blackfriday.EXTENSION_SPACE_HEADERS
-	extensions |= blackfriday.EXTENSION_FOOTNOTES
-	extensions |= blackfriday.EXTENSION_HEADER_IDS
+func markdownRender(content []byte) []byte {
+	return blackfriday.Markdown(content, getHtmlRenderer(false),
+		getMarkdownExtensions())
+}
 
-	return blackfriday.Markdown(content, renderer, extensions)
+func markdownRenderWithTOC(content []byte) []byte {
+	return blackfriday.Markdown(content, getHtmlRenderer(true),
+		getMarkdownExtensions())
 }
 
 func extractTOC(content []byte) (newcontent []byte, toc []byte) {
@@ -802,7 +795,7 @@
 		return nil
 	}
 
-	l  := make([]string, len(s))
+	l := make([]string, len(s))
 	for i, v := range s {
 		l[i] = strings.ToLower(v)
 	}