summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVas Sudanagunta <vas@commonkarma.org>2018-05-04 20:17:16 -0400
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2018-05-12 20:16:26 +0200
commit2fb9af59c14b1732ba1a2f21794e2cf8dfca0604 (patch)
treee8bd293fae36dea700e779a9707598c8e7bc5252
parent00e36a4164d730bd1dff1d0efd04283992bfe671 (diff)
Improve markup determination logic
Sets Page.markup earlier (as early as possible, when the page is loaded). Sets it once and only once, removing many redundant calls to determineMarkupType(). This kills a sleeping bug that was avoided by the parts of the code depending on this value making those redundant calls.
-rw-r--r--hugolib/page.go23
-rw-r--r--hugolib/shortcode.go5
2 files changed, 12 insertions, 16 deletions
diff --git a/hugolib/page.go b/hugolib/page.go
index 6e0f2b86f..e79b063cc 100644
--- a/hugolib/page.go
+++ b/hugolib/page.go
@@ -728,8 +728,7 @@ func replaceDivider(content, from, to []byte) ([]byte, bool) {
// rendering engines.
func (p *Page) replaceDivider(content []byte) []byte {
summaryDivider := helpers.SummaryDivider
- // TODO(bep) handle better.
- if p.Ext() == "org" || p.Markup == "org" {
+ if p.Markup == "org" {
summaryDivider = []byte("# more")
}
@@ -863,7 +862,7 @@ func (p *Page) setAutoSummary() error {
func (p *Page) renderContent(content []byte) []byte {
return p.s.ContentSpec.RenderBytes(&helpers.RenderingContext{
- Content: content, RenderTOC: true, PageFmt: p.determineMarkupType(),
+ Content: content, RenderTOC: true, PageFmt: p.Markup,
Cfg: p.Language(),
DocumentID: p.UniqueID(), DocumentName: p.Path(),
Config: p.getRenderingConfig()})
@@ -1486,6 +1485,13 @@ func (p *Page) update(frontmatter map[string]interface{}) error {
}
}
+ // 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())
+ }
+
if draft != nil && published != nil {
p.Draft = *draft
p.s.Log.ERROR.Printf("page %s has both draft and published settings in its frontmatter. Using draft.", p.File.Path())
@@ -1725,17 +1731,6 @@ func (p *Page) shouldRenderTo(f output.Format) bool {
return found
}
-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 p.Markup
-}
-
func (p *Page) parse(reader io.Reader) error {
psr, err := parser.ReadFrom(reader)
if err != nil {
diff --git a/hugolib/shortcode.go b/hugolib/shortcode.go
index 8afbfb645..b82c1b6c2 100644
--- a/hugolib/shortcode.go
+++ b/hugolib/shortcode.go
@@ -314,7 +314,8 @@ func renderShortcode(
if sc.doMarkup {
newInner := p.s.ContentSpec.RenderBytes(&helpers.RenderingContext{
- Content: []byte(inner), PageFmt: p.determineMarkupType(),
+ Content: []byte(inner),
+ PageFmt: p.Markup,
Cfg: p.Language(),
DocumentID: p.UniqueID(),
DocumentName: p.Path(),
@@ -333,7 +334,7 @@ func renderShortcode(
// 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.determineMarkupType() {
+ switch p.Markup {
case "unknown", "markdown":
if match, _ := regexp.MatchString(innerNewlineRegexp, inner); !match {
cleaner, err := regexp.Compile(innerCleanupRegexp)