From 9f6b5ad3b4f2ab7815a475cdf9d7dc354701ebb6 Mon Sep 17 00:00:00 2001 From: ypnos Date: Sun, 20 Mar 2016 21:40:03 +0100 Subject: [PATCH] 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 --- hugolib/page.go | 19 +++++++++---------- hugolib/shortcode.go | 4 ++-- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/hugolib/page.go b/hugolib/page.go index 2342e368f..cff84737b 100644 --- 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 index 782f0e21a..36d2058f1 100644 --- 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
HUGOSHORTCODE-1
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)