From 288c39643906b4194a0a6acfbaf87cb0fbdeb361 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Pedersen?= Date: Tue, 24 Apr 2018 05:57:33 +0200 Subject: hugolib: Fix some shortcode vs .Content corner cases This is a follow-up to #4632. There were some assumptions in that implementation that did not hold water in all situations. This commit simplifies the content lazy initalization making it more robust. Fixes #4664 --- hugolib/shortcode.go | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'hugolib/shortcode.go') diff --git a/hugolib/shortcode.go b/hugolib/shortcode.go index 4792b7f61..8afbfb645 100644 --- a/hugolib/shortcode.go +++ b/hugolib/shortcode.go @@ -366,7 +366,12 @@ func (s *shortcodeHandler) updateDelta() bool { s.contentShortcodes = createShortcodeRenderers(s.shortcodes, s.p.withoutContent()) }) - contentShortcodes := s.contentShortcodesForOutputFormat(s.p.s.rc.Format) + if !s.p.shouldRenderTo(s.p.s.rc.Format) { + // TODO(bep) add test for this re translations + return false + } + of := s.p.s.rc.Format + contentShortcodes := s.contentShortcodesForOutputFormat(of) if s.contentShortcodesDelta == nil || s.contentShortcodesDelta.Len() == 0 { s.contentShortcodesDelta = contentShortcodes @@ -387,13 +392,19 @@ func (s *shortcodeHandler) updateDelta() bool { return delta.Len() > 0 } +func (s *shortcodeHandler) clearDelta() { + if s == nil { + return + } + s.contentShortcodesDelta = newOrderedMap() +} + func (s *shortcodeHandler) contentShortcodesForOutputFormat(f output.Format) *orderedMap { contentShortcodesForOuputFormat := newOrderedMap() lang := s.p.Lang() for _, key := range s.shortcodes.Keys() { shortcodePlaceholder := key.(string) - // shortcodePlaceholder := s.shortcodes.getShortcode(key) key := newScKeyFromLangAndOutputFormat(lang, f, shortcodePlaceholder) renderFn, found := s.contentShortcodes.Get(key) -- cgit v1.2.3