shithub: hugo

Download patch

ref: 00d70e55692a75147bfa0ba73f21f6228a8a1934
parent: 068a77151e27adb4106e86c407831ad6aa34ad8d
author: Bjørn Erik Pedersen <[email protected]>
date: Sun Jul 10 08:52:20 EDT 2016

Remove []byte to string to []byte conversion in Rst

--- a/helpers/content.go
+++ b/helpers/content.go
@@ -373,7 +373,7 @@
 	case "mmark":
 		return mmarkRender(ctx)
 	case "rst":
-		return []byte(getRstContent(ctx.Content))
+		return getRstContent(ctx.Content)
 	}
 }
 
@@ -503,7 +503,7 @@
 
 // getRstContent calls the Python script rst2html as an external helper
 // to convert reStructuredText content to HTML.
-func getRstContent(content []byte) string {
+func getRstContent(content []byte) []byte {
 	cleanContent := bytes.Replace(content, SummaryDivider, []byte(""), 1)
 
 	path := getRstExecPath()
@@ -511,7 +511,7 @@
 	if path == "" {
 		jww.ERROR.Println("rst2html / rst2html.py not found in $PATH: Please install.\n",
 			"                 Leaving reStructuredText content unrendered.")
-		return (string(content))
+		return content
 
 	}
 
@@ -523,11 +523,11 @@
 		jww.ERROR.Println(err)
 	}
 
-	rstLines := strings.Split(out.String(), "\n")
-	for i, line := range rstLines {
-		if strings.HasPrefix(line, "<body>") {
-			rstLines = (rstLines[i+1 : len(rstLines)-3])
-		}
-	}
-	return strings.Join(rstLines, "\n")
+	result := out.Bytes()
+
+	// TODO(bep) check if rst2html has a body only option.
+	bodyStart := bytes.Index(result, []byte("<body>\n"))
+	bodyEnd := bytes.Index(result, []byte("\n</body>"))
+
+	return result[bodyStart+7 : bodyEnd]
 }