{-# LANGUAGE OverloadedStrings #-} {-# OPTIONS_GHC -fno-warn-missing-signatures #-} module Text.Pandoc.Filter.EmphasizeCodeTest where import Test.Tasty.Hspec import qualified Text.Pandoc.Filter.EmphasizeCode as Filter import Text.Pandoc.JSON singleRangeHtmlMark :: Block singleRangeHtmlMark = RawBlock "html" (mconcat [ "
hello world\n"
, "hej världen\n"
, "hallo welt\n"
, "hei verden
"
])
singleRangeHtmlEm :: Block
singleRangeHtmlEm =
RawBlock
"html"
(mconcat
[ "hello world\n"
, "hej världen\n"
, "hallo welt\n"
, "hei verden
"
])
emphasizeCode :: Format -> String -> IO Block
emphasizeCode format ranges =
Filter.emphasizeCode
(Just format)
(CodeBlock
("", ["my-lang"], [("emphasize", ranges)])
"hello world\nhej världen\nhallo welt\nhei verden")
spec_emphasizeCode = do
it "emphasizes HTML and a single range" $
emphasizeCode "html5" "2:5-3:5" `shouldReturn` singleRangeHtmlMark
it "emphasizes HTML and a single range over multiple lines" $
emphasizeCode "html5" "2:5-4:3" `shouldReturn`
RawBlock
"html"
(mconcat
[ "hello world\n"
, "hej världen\n"
, "hallo welt\n"
, "hei verden
"
])
it "emphasizes HTML and multiple ranges" $
emphasizeCode "html5" "1:1-1:5,2:5-3:5" `shouldReturn`
RawBlock
"html"
(mconcat
[ "hello world\n"
, "hej världen\n"
, "hallo welt\n"
, "hei verden
"
])
it "emphasizes RevealJS HTML using " $
emphasizeCode "revealjs" "2:5-3:5" `shouldReturn` singleRangeHtmlMark
it "emphasizes HTML4 using " $
emphasizeCode "html" "2:5-3:5" `shouldReturn` singleRangeHtmlEm
it "emphasizes markdown_github using " $
emphasizeCode "markdown_github" "2:5-3:5" `shouldReturn` singleRangeHtmlEm
it "emphasizes latex and multiple ranges" $
emphasizeCode "latex" "1:1-1:5,2:5-3:5" `shouldReturn`
RawBlock
"latex"
(mconcat
[ "\\begin{lstlisting}[escapechar=£,language=my-lang]\n"
, "£\\CodeEmphasis{hello}£ world\n"
, "hej £\\CodeEmphasis{världen}£\n"
, "£\\CodeEmphasis{hallo}£ welt\n"
, "hei verden\n"
, "\\end{lstlisting}\n"
])
{-# ANN module ("HLint: ignore Use camelCase" :: String) #-}