-- | A Shakespearean module for Babel module Text.Babel ( babel , babelFile , babelFileReload , babelSettings ) where import Language.Haskell.TH.Quote import Language.Haskell.TH.Syntax import Text.Julius import Text.Shakespeare -- | es2015 compiles down to Javascript babelSettings :: Q ShakespeareSettings babelSettings = do jsettings <- javascriptSettings return $ jsettings { varChar = '#' , preConversion = Just PreConvert { preConvert = ReadProcess "babel" ["--presets", "es2015"] , preEscapeIgnoreBalanced = "'\"" , preEscapeIgnoreLine = "//" , wrapInsertion = Just WrapInsertion { wrapInsertionIndent = Nothing , wrapInsertionStartBegin = ";(function(" , wrapInsertionSeparator = ", " , wrapInsertionStartClose = "){" , wrapInsertionEnd = "})" , wrapInsertionAddParens = False }}} -- | Read inline babel :: QuasiQuoter babel = QuasiQuoter { quoteExp = \s -> babelSettings >>= \rs -> quoteExp (shakespeare rs) s } -- | Read in a es2015 file babelFile :: FilePath -> Q Exp babelFile fp = do rs <- babelSettings shakespeareFile rs fp -- | Read in a es2015 file at develop babelFileReload :: FilePath -> Q Exp babelFileReload fp = do rs <- babelSettings shakespeareFileReload rs fp