factory = require "spec.factory" import trim from require "sitegen.common" flatten_html = (html) -> trim (html\gsub "%>%s+%<", "><") describe "renderers", -> render_for_site = (site, renderer, str, meta={}, page) -> page or= factory.Page(:site) page.render_fn, page.meta = renderer\load str page.meta.template = false for k,v in pairs meta page.meta[k] = v page\render! describe "renderers.markdown", -> local site, renderer render = (...) -> render_for_site site, renderer, ... before_each -> MarkdownRenderer = require "renderers.markdown" site = factory.Site! renderer = MarkdownRenderer site it "syntax highlights some code", -> out = flatten_html render [[ ```lua print("hello world") ```]] assert.same [[
print("hello world")
]], out it "syntax highlights moonscript code", -> out = flatten_html render [[ ```moonscript print "Hi, #{@name}!" ```]] assert.same [[
print"Hi, #{@name}!"
]], out it "doesnt highlight code inside of a cosmo template", -> site.user_vars.hello = (_, args) -> { template } = args template out = flatten_html render [=[ ```lua print 5 ``` $hello{[[ ```lua print thing ``` ]]}]=] assert.same [=[
print5

```lua print thing ```

]=], out it "doesn't highlight unrecognized code languages", -> out = flatten_html render [[ ```snickerdoodle this code block has an unknown label ```]] assert.same [[
this code block has an unknown label
]], out it "doesn't highlight unlabeled code blocks", -> out = flatten_html render [[ ``` this code block has no label ```]] assert.same [[
this code block has no label
]], out it "defaults to pandoc highlighting when pygments fails to recognize code language", -> out = flatten_html render [[ ```heex <.greet name="Jane" /> ```]] assert.same [[
<.greet name="Jane"/>
]], out