commit 9f6b5ad3b4f2ab7815a475cdf9d7dc354701ebb6
parent e6e98bf52de8ad7d95808d4e0c57b9391aca966e
Author: ypnos <github@lanrules.de>
Date: Sun, 20 Mar 2016 21:40:03 +0100
Save auto-detected markup type in Page.Markup
If Page.Markup was not set by the user, it will now be set after
guessing from the file extension. This means, Page.Markup will be set in
any case. It can be used by a theme to differentiate between markup
types.
Fixes #1950
Diffstat:
2 files changed, 11 insertions(+), 12 deletions(-)
diff --git a/hugolib/page.go b/hugolib/page.go
@@ -264,7 +264,7 @@ func (p *Page) renderBytes(content []byte) []byte {
}
}
return helpers.RenderBytes(
- &helpers.RenderingContext{Content: content, PageFmt: p.guessMarkupType(),
+ &helpers.RenderingContext{Content: content, PageFmt: p.determineMarkupType(),
DocumentID: p.UniqueID(), Config: p.getRenderingConfig(), LinkResolver: fn, FileResolver: fileFn})
}
@@ -279,7 +279,7 @@ func (p *Page) renderContent(content []byte) []byte {
return p.Node.Site.SourceRelativeLinkFile(ref, p)
}
}
- return helpers.RenderBytesWithTOC(&helpers.RenderingContext{Content: content, PageFmt: p.guessMarkupType(),
+ return helpers.RenderBytesWithTOC(&helpers.RenderingContext{Content: content, PageFmt: p.determineMarkupType(),
DocumentID: p.UniqueID(), Config: p.getRenderingConfig(), LinkResolver: fn, FileResolver: fileFn})
}
@@ -801,16 +801,15 @@ func (p *Page) Render(layout ...string) template.HTML {
return tpl.ExecuteTemplateToHTML(p, l...)
}
-func (p *Page) guessMarkupType() string {
- // First try the explicitly set markup from the frontmatter
- if p.Markup != "" {
- format := helpers.GuessType(p.Markup)
- if format != "unknown" {
- return format
- }
+func (p *Page) determineMarkupType() string {
+ // Try markup explicitly set in the frontmatter
+ p.Markup = helpers.GuessType(p.Markup)
+ if p.Markup == "unknown" {
+ // Fall back to file extension (might also return "unknown")
+ p.Markup = helpers.GuessType(p.Source.Ext())
}
- return helpers.GuessType(p.Source.Ext())
+ return p.Markup
}
func (p *Page) parse(reader io.Reader) error {
diff --git a/hugolib/shortcode.go b/hugolib/shortcode.go
@@ -234,7 +234,7 @@ func renderShortcode(sc shortcode, parent *ShortcodeWithPage, p *Page, t tpl.Tem
if sc.doMarkup {
newInner := helpers.RenderBytes(&helpers.RenderingContext{
- Content: []byte(inner), PageFmt: p.guessMarkupType(),
+ Content: []byte(inner), PageFmt: p.determineMarkupType(),
DocumentID: p.UniqueID(), Config: p.getRenderingConfig()})
// If the type is “unknown” or “markdown”, we assume the markdown
@@ -250,7 +250,7 @@ func renderShortcode(sc shortcode, parent *ShortcodeWithPage, p *Page, t tpl.Tem
// substitutions in <div>HUGOSHORTCODE-1</div> which prevents the
// generation, but means that you can’t use shortcodes inside of
// markdown structures itself (e.g., `[foo]({{% ref foo.md %}})`).
- switch p.guessMarkupType() {
+ switch p.determineMarkupType() {
case "unknown", "markdown":
if match, _ := regexp.MatchString(innerNewlineRegexp, inner); !match {
cleaner, err := regexp.Compile(innerCleanupRegexp)