mirror of
https://github.com/gohugoio/hugo.git
synced 2024-12-24 19:03:28 +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 {
|
func GetRstContent(content []byte) string {
|
||||||
cleanContent := bytes.Replace(content, SummaryDivider, []byte(""), 1)
|
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)
|
cmd.Stdin = bytes.NewReader(cleanContent)
|
||||||
var out bytes.Buffer
|
var out bytes.Buffer
|
||||||
cmd.Stdout = &out
|
cmd.Stdout = &out
|
||||||
|
|
|
@ -24,6 +24,7 @@ func init() {
|
||||||
RegisterHandler(new(markdownHandler))
|
RegisterHandler(new(markdownHandler))
|
||||||
RegisterHandler(new(htmlHandler))
|
RegisterHandler(new(htmlHandler))
|
||||||
RegisterHandler(new(asciidocHandler))
|
RegisterHandler(new(asciidocHandler))
|
||||||
|
RegisterHandler(new(rstHandler))
|
||||||
}
|
}
|
||||||
|
|
||||||
type basicPageHandler Handle
|
type basicPageHandler Handle
|
||||||
|
@ -100,3 +101,30 @@ func (h asciidocHandler) PageConvert(p *Page, t tpl.Template) HandledResult {
|
||||||
//err := p.Convert()
|
//err := p.Convert()
|
||||||
return HandledResult{page: p, err: nil}
|
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