1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
|
{-# LANGUAGE CPP #-}
{-# OPTIONS_GHC -fno-warn-missing-fields #-}
module Quoter (quote, quoteFile, quoteFileReload) where
import Language.Haskell.TH.Syntax
import Language.Haskell.TH.Quote (QuasiQuoter (..))
#ifdef TEST_COFFEE
import Text.Coffee
import Text.Coffee (coffeeSettings)
import Text.Shakespeare (shakespeare)
#else
# ifdef TEST_ROY
import Text.Roy
# else
import Text.Julius
# endif
#endif
quote :: QuasiQuoter
quoteFile :: FilePath -> Q Exp
quoteFileReload :: FilePath -> Q Exp
#ifdef TEST_COFFEE
translate ('#':'{':rest) = translate $ '%':'{':translate rest
translate (c:other) = c:translate other
translate [] = []
quote = QuasiQuoter { quoteExp = \s -> do
rs <- coffeeSettings
quoteExp (shakespeare rs) (translate s)
}
quoteFile = coffeeFile
quoteFileReload = coffeeFileReload
#else
# ifdef TEST_ROY
quote = roy
quoteFile = royFile
quoteFileReload = royFileReload
# else
quote = julius
quoteFile = juliusFile
quoteFileReload = juliusFileReload
# endif
#endif
|