URI: 
       Insert code tag for server-side syntax highlighting - 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 ec9c6912163f9ca3c10ad75aba939a76ec96e932
   DIR parent 6a3aced15a402183b7c92817a259c44d890cf7be
  HTML Author: Nathan Youngman <git@nathany.com>
       Date:   Wed, 14 Oct 2015 15:10:50 -0600
       
       Insert code tag for server-side syntax highlighting
       
       Inserts a code tag into Pygments output with the language-info that is present when using client-side highlighting (useful for CSS hooks)
       
       ```html
       <code class="language-go" data-lang="go">
       ```
       
       closes #1490
       
       Diffstat:
         M helpers/content_renderer_test.go    |       2 +-
         M helpers/pygments.go                 |      13 +++++++++++--
       
       2 files changed, 12 insertions(+), 3 deletions(-)
       ---
   DIR diff --git a/helpers/content_renderer_test.go b/helpers/content_renderer_test.go
       @@ -38,7 +38,7 @@ func TestCodeFence(t *testing.T) {
                        input, expected string
                }
                data := []test{
       -                {true, "<html></html>", "<div class=\"highlight\"><pre><span class=\"nt\">&lt;html&gt;&lt;/html&gt;</span>\n</pre></div>\n"},
       +                {true, "<html></html>", "<div class=\"highlight\"><pre><code class=\"language-html\" data-lang=\"html\"><span class=\"nt\">&lt;html&gt;&lt;/html&gt;</span>\n</code></pre></div>\n"},
                        {false, "<html></html>", "<pre><code class=\"language-html\">&lt;html&gt;&lt;/html&gt;</code></pre>\n"},
                }
        
   DIR diff --git a/helpers/pygments.go b/helpers/pygments.go
       @@ -111,14 +111,23 @@ func Highlight(code, lang, optsStr string) string {
                        return code
                }
        
       +        str := out.String()
       +
       +        // inject code tag into Pygments output
       +        if lang != "" && strings.Contains(str, "<pre>") {
       +                codeTag := fmt.Sprintf(`<pre><code class="language-%s" data-lang="%s">`, lang, lang)
       +                str = strings.Replace(str, "<pre>", codeTag, 1)
       +                str = strings.Replace(str, "</pre>", "</code></pre>", 1)
       +        }
       +
                if cachefile != "" {
                        // Write cache file
       -                if err := WriteToDisk(cachefile, bytes.NewReader(out.Bytes()), fs); err != nil {
       +                if err := WriteToDisk(cachefile, strings.NewReader(str), fs); err != nil {
                                jww.ERROR.Print(stderr.String())
                        }
                }
        
       -        return out.String()
       +        return str
        }
        
        var pygmentsKeywords = make(map[string]bool)