forked from gohugoio/hugo
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add GitHub style code fence support to mmark
Fixes gohugoio#1258.
- Loading branch information
Showing
3 changed files
with
84 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
package helpers | ||
import ( | ||
"testing" | ||
"github.com/spf13/viper" | ||
"bytes" | ||
) | ||
|
||
// Renders a codeblock using Blackfriday | ||
func render(input string) string { | ||
ctx := &RenderingContext{}; | ||
render := GetHTMLRenderer(0, ctx); | ||
|
||
buf := &bytes.Buffer{} | ||
render.BlockCode(buf, []byte(input), "html") | ||
return buf.String() | ||
} | ||
|
||
// Renders a codeblock using Mmark | ||
func renderWithMmark(input string) string { | ||
ctx := &RenderingContext{}; | ||
render := GetMmarkHtmlRenderer(0, ctx); | ||
|
||
buf := &bytes.Buffer{} | ||
render.BlockCode(buf, []byte(input), "html", []byte(""), false, false) | ||
return buf.String() | ||
} | ||
|
||
|
||
func TestCodeFence(t *testing.T) { | ||
|
||
if !HasPygments() { | ||
t.Skip("Skipping Pygments test as Pygments is not installed or available.") | ||
return | ||
} | ||
|
||
type test struct { | ||
enabled bool | ||
input, expected string | ||
} | ||
data := []test{ | ||
{true, "<html></html>", "<div class=\"highlight\"><pre><span class=\"nt\"><html></html></span>\n</pre></div>\n"}, | ||
{false, "<html></html>", "<pre><code class=\"language-html\"><html></html></code></pre>\n"}, | ||
} | ||
|
||
viper.Reset() | ||
defer viper.Reset() | ||
|
||
viper.Set("PygmentsStyle", "monokai") | ||
viper.Set("PygmentsUseClasses", true) | ||
|
||
for i, d := range data { | ||
viper.Set("PygmentsCodeFences", d.enabled) | ||
|
||
result := render(d.input) | ||
if result != d.expected { | ||
t.Errorf("Test %d failed. BlackFriday enabled:%t, Expected:\n%q got:\n%q", i, d.enabled, d.expected, result) | ||
} | ||
|
||
result = renderWithMmark(d.input) | ||
if result != d.expected { | ||
t.Errorf("Test %d failed. Mmark enabled:%t, Expected:\n%q got:\n%q", i, d.enabled, d.expected, result) | ||
} | ||
} | ||
} |