{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE CPP #-}
{-# OPTIONS_GHC -fno-warn-missing-fields #-}
module Text.Roy
(
roy
, royFile
, royFileReload
#ifdef TEST_EXPORT
, roySettings
#endif
) where
import Language.Haskell.TH.Quote (QuasiQuoter (..))
import Language.Haskell.TH.Syntax
import Text.Shakespeare
import Text.Julius
roySettings :: Q ShakespeareSettings
roySettings :: Q ShakespeareSettings
roySettings = do
ShakespeareSettings
jsettings <- Q ShakespeareSettings
javascriptSettings
ShakespeareSettings -> Q ShakespeareSettings
forall a. a -> Q a
forall (m :: * -> *) a. Monad m => a -> m a
return (ShakespeareSettings -> Q ShakespeareSettings)
-> ShakespeareSettings -> Q ShakespeareSettings
forall a b. (a -> b) -> a -> b
$ ShakespeareSettings
jsettings { varChar = '#'
, preConversion = Just PreConvert {
preConvert = ReadProcess "roy" ["--stdio", "--browser"]
, preEscapeIgnoreBalanced = "'\""
, preEscapeIgnoreLine = "//"
, wrapInsertion = Just WrapInsertion {
wrapInsertionIndent = Just " "
, wrapInsertionStartBegin = "(\\"
, wrapInsertionSeparator = " "
, wrapInsertionStartClose = " ->\n"
, wrapInsertionEnd = ")"
, wrapInsertionAddParens = True
}
}
}
roy :: QuasiQuoter
roy :: QuasiQuoter
roy = QuasiQuoter { quoteExp :: [Char] -> Q Exp
quoteExp = \[Char]
s -> do
ShakespeareSettings
rs <- Q ShakespeareSettings
roySettings
QuasiQuoter -> [Char] -> Q Exp
quoteExp (ShakespeareSettings -> QuasiQuoter
shakespeare ShakespeareSettings
rs) [Char]
s
}
royFile :: FilePath -> Q Exp
royFile :: [Char] -> Q Exp
royFile [Char]
fp = do
ShakespeareSettings
rs <- Q ShakespeareSettings
roySettings
ShakespeareSettings -> [Char] -> Q Exp
shakespeareFile ShakespeareSettings
rs [Char]
fp
royFileReload :: FilePath -> Q Exp
royFileReload :: [Char] -> Q Exp
royFileReload [Char]
fp = do
ShakespeareSettings
rs <- Q ShakespeareSettings
roySettings
ShakespeareSettings -> [Char] -> Q Exp
shakespeareFileReload ShakespeareSettings
rs [Char]
fp