{-# 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 (@@?=) :: (Eq a, Show a) => IO a -> a -> IO () (@@?=) a b = a >>= (`shouldBe` b) 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" @@?= RawBlock "html" (mconcat [ "
hello world\n"
         , "hej världen\n"
         , "hallo welt\n"
         , "hei verden
" ]) it "emphasizes HTML and a single range over multiple lines" $ emphasizeCode "html5" "2:5-4:3" @@?= 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" @@?= RawBlock "html" (mconcat [ "
hello world\n"
         , "hej världen\n"
         , "hallo welt\n"
         , "hei verden
" ]) it "emphasizes latex and multiple ranges" $ emphasizeCode "latex" "1:1-1:5,2:5-3:5" @@?= 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) #-}