better handling of detecting markup format - hugo - [fork] hugo port for 9front
HTML git clone git@git.drkhsh.at/hugo.git
DIR Log
DIR Files
DIR Refs
DIR Submodules
DIR README
DIR LICENSE
---
DIR commit d0ef3d43bd33cc1c0ea7a4aac91059f941987ad8
DIR parent f432b187a0ec52629ad1b9d993a5c3203e3699d5
HTML Author: spf13 <steve.francia@gmail.com>
Date: Fri, 6 Dec 2013 23:56:51 -0500
better handling of detecting markup format
Diffstat:
M hugolib/page.go | 30 ++++++++++++++++++++++--------
M hugolib/site_test.go | 2 ++
2 files changed, 24 insertions(+), 8 deletions(-)
---
DIR diff --git a/hugolib/page.go b/hugolib/page.go
@@ -490,17 +490,35 @@ func (p *Page) ExecuteTemplate(layout string) *bytes.Buffer {
}
func (page *Page) guessMarkupType() string {
+ // First try the explicitly set markup from the frontmatter
if page.Markup != "" {
- return page.Markup
+ format := guessType(page.Markup)
+ if format != "unknown" {
+ return format
+ }
}
- if strings.HasSuffix(page.FileName, ".md") {
- return "md"
+ // Then try to guess from the extension
+ ext := strings.ToLower(path.Ext(page.FileName))
+ if strings.HasPrefix(ext, ".") {
+ return guessType(ext[1:])
}
return "unknown"
}
+func guessType(in string) string {
+ switch in {
+ case "md", "markdown", "mdown":
+ return "markdown"
+ case "rst":
+ return "rst"
+ case "html", "htm":
+ return "html"
+ }
+ return "unknown"
+}
+
func (page *Page) parse(reader io.Reader) error {
p, err := parser.ReadFrom(reader)
if err != nil {
@@ -530,14 +548,10 @@ func (page *Page) parse(reader io.Reader) error {
func (page *Page) Convert() error {
switch page.guessMarkupType() {
- case "md", "markdown", "mdown":
+ case "markdown":
page.convertMarkdown(bytes.NewReader([]byte(page.Content)))
case "rst":
page.convertRestructuredText(bytes.NewReader([]byte(page.Content)))
- case "html":
- fallthrough
- default:
- page.Content = template.HTML(page.Content)
}
return nil
}
DIR diff --git a/hugolib/site_test.go b/hugolib/site_test.go
@@ -229,6 +229,7 @@ func TestSkipRender(t *testing.T) {
{"sect/doc5.html", []byte("<!doctype html><html>{{ template \"head\" }}<body>body5</body></html>"), "sect"},
{"sect/doc6.html", []byte("<!doctype html><html>{{ template \"head_abs\" }}<body>body5</body></html>"), "sect"},
{"doc7.html", []byte("<html><body>doc7 content</body></html>"), ""},
+ {"sect/doc8.html", []byte("---\nmarkup: md\n---\n# title\nsome *content*"), "sect"},
}
s := &Site{
@@ -267,6 +268,7 @@ func TestSkipRender(t *testing.T) {
{"sect/doc5.html", "<!doctype html><html><head><script src=\"script.js\"></script></head><body>body5</body></html>"},
{"sect/doc6.html", "<!doctype html><html><head><script src=\"http://auth/bub/script.js\"></script></head><body>body5</body></html>"},
{"doc7.html", "<html><body>doc7 content</body></html>"},
+ {"sect/doc8.html", "<h1>title</h1>\n\n<p>some <em>content</em></p>\n"},
}
for _, test := range tests {