mirror of
https://github.com/gohugoio/hugo.git
synced 2024-12-24 18:51:40 +00:00
Register rstHandler to restore experimental reST support
(Experimental) reStructuredText support was working in v0.12, but was no longer handled after some refactoring in v0.13-DEV. That experimental support is now restored. Furthermore, check for both rst2html and rst2html.py in the PATH, and execute whichever is found. See #472 for more information.
This commit is contained in:
parent
1cc6386937
commit
19c52ab0b5
2 changed files with 39 additions and 1 deletions
|
@ -252,7 +252,17 @@ func TruncateWordsToWholeSentence(s string, max int) string {
|
|||
func GetRstContent(content []byte) string {
|
||||
cleanContent := bytes.Replace(content, SummaryDivider, []byte(""), 1)
|
||||
|
||||
cmd := exec.Command("rst2html.py", "--leave-comments")
|
||||
path, err := exec.LookPath("rst2html")
|
||||
if err != nil {
|
||||
path, err = exec.LookPath("rst2html.py")
|
||||
if err != nil {
|
||||
jww.ERROR.Println("rst2html / rst2html.py not found in $PATH: Please install.\n",
|
||||
" Leaving reStructuredText content unrendered.")
|
||||
return(string(content))
|
||||
}
|
||||
}
|
||||
|
||||
cmd := exec.Command(path, "--leave-comments")
|
||||
cmd.Stdin = bytes.NewReader(cleanContent)
|
||||
var out bytes.Buffer
|
||||
cmd.Stdout = &out
|
||||
|
|
|
@ -24,6 +24,7 @@ func init() {
|
|||
RegisterHandler(new(markdownHandler))
|
||||
RegisterHandler(new(htmlHandler))
|
||||
RegisterHandler(new(asciidocHandler))
|
||||
RegisterHandler(new(rstHandler))
|
||||
}
|
||||
|
||||
type basicPageHandler Handle
|
||||
|
@ -100,3 +101,30 @@ func (h asciidocHandler) PageConvert(p *Page, t tpl.Template) HandledResult {
|
|||
//err := p.Convert()
|
||||
return HandledResult{page: p, err: nil}
|
||||
}
|
||||
|
||||
type rstHandler struct {
|
||||
basicPageHandler
|
||||
}
|
||||
|
||||
func (h rstHandler) Extensions() []string { return []string{"rest", "rst"} }
|
||||
func (h rstHandler) PageConvert(p *Page, t tpl.Template) HandledResult {
|
||||
p.ProcessShortcodes(t)
|
||||
|
||||
tmpContent, tmpTableOfContents := helpers.ExtractTOC(p.renderContent(helpers.RemoveSummaryDivider(p.rawContent)))
|
||||
|
||||
if len(p.contentShortCodes) > 0 {
|
||||
tmpContentWithTokensReplaced, err := replaceShortcodeTokens(tmpContent, shortcodePlaceholderPrefix, -1, true, p.contentShortCodes)
|
||||
|
||||
if err != nil {
|
||||
jww.FATAL.Printf("Fail to replace short code tokens in %s:\n%s", p.BaseFileName(), err.Error())
|
||||
return HandledResult{err: err}
|
||||
} else {
|
||||
tmpContent = tmpContentWithTokensReplaced
|
||||
}
|
||||
}
|
||||
|
||||
p.Content = helpers.BytesToHTML(tmpContent)
|
||||
p.TableOfContents = helpers.BytesToHTML(tmpTableOfContents)
|
||||
|
||||
return HandledResult{err: nil}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue