shakespeare-text 0.10.5 → 0.11
raw patch · 3 files changed
+69/−8 lines, 3 filesdep ~shakespearenew-uploaderPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: shakespeare
API changes (from Hackage documentation)
+ Text.Shakespeare.Text: codegen :: QuasiQuoter
+ Text.Shakespeare.Text: codegenFile :: FilePath -> Q Exp
+ Text.Shakespeare.Text: codegenFileReload :: FilePath -> Q Exp
+ Text.Shakespeare.Text: codegenSt :: QuasiQuoter
Files
- Text/Shakespeare/Text.hs +62/−1
- shakespeare-text.cabal +3/−3
- test/ShakespeareTextTest.hs +4/−4
Text/Shakespeare/Text.hs view
@@ -14,6 +14,11 @@ , textFileReload , st -- | strict text , lt -- | lazy text, same as stext :)+ -- * Yesod code generation+ , codegen+ , codegenSt+ , codegenFile+ , codegenFileReload ) where import Language.Haskell.TH.Quote (QuasiQuoter (..))@@ -51,6 +56,7 @@ , unwrap = unWrapExp } + stext, lt, st, text :: QuasiQuoter stext = QuasiQuoter { quoteExp = \s -> do@@ -74,6 +80,7 @@ quoteExp (shakespeare rs) s } + textFile :: FilePath -> Q Exp textFile fp = do rs <- settings@@ -87,4 +94,58 @@ textFileReload :: FilePath -> Q Exp textFileReload fp = do rs <- settings- shakespeareFileDebug rs fp+ shakespeareFileReload rs fp++-- | codegen is designed for generating Yesod code, including templates+-- So it uses different interpolation characters that won't clash with templates.+codegenSettings :: Q ShakespeareSettings+codegenSettings = do+ toTExp <- [|toText|]+ wrapExp <- [|id|]+ unWrapExp <- [|id|]+ return $ defaultShakespeareSettings { toBuilder = toTExp+ , wrap = wrapExp+ , unwrap = unWrapExp+ , varChar = '~'+ , urlChar = '*'+ , intChar = '&'+ , justVarInterpolation = True -- always!+ }++-- | codegen is designed for generating Yesod code, including templates+-- So it uses different interpolation characters that won't clash with templates.+-- You can use the normal text quasiquoters to generate code+codegen :: QuasiQuoter+codegen =+ QuasiQuoter { quoteExp = \s -> do+ rs <- codegenSettings+ render <- [|renderText|]+ rendered <- shakespeareFromString rs { justVarInterpolation = True } s+ return (render `AppE` rendered)+ }++-- | Generates strict Text+-- codegen is designed for generating Yesod code, including templates+-- So it uses different interpolation characters that won't clash with templates.+codegenSt :: QuasiQuoter+codegenSt =+ QuasiQuoter { quoteExp = \s -> do+ rs <- codegenSettings+ render <- [|TL.toStrict . renderText|]+ rendered <- shakespeareFromString rs { justVarInterpolation = True } s+ return (render `AppE` rendered)+ }++codegenFileReload :: FilePath -> Q Exp+codegenFileReload fp = do+ rs <- codegenSettings+ render <- [|TL.toStrict . renderText|]+ rendered <- shakespeareFileReload rs{ justVarInterpolation = True } fp+ return (render `AppE` rendered)++codegenFile :: FilePath -> Q Exp+codegenFile fp = do+ rs <- codegenSettings+ render <- [|TL.toStrict . renderText|]+ rendered <- shakespeareFile rs{ justVarInterpolation = True } fp+ return (render `AppE` rendered)
shakespeare-text.cabal view
@@ -1,5 +1,5 @@ name: shakespeare-text-version: 0.10.5+version: 0.11 license: BSD3 license-file: LICENSE author: Greg Weber <greg@gregweber.info>@@ -32,7 +32,7 @@ library build-depends: base >= 4 && < 5- , shakespeare >= 0.10 && < 0.11+ , shakespeare >= 0.11 && < 0.12 , template-haskell , text >= 0.7 && < 0.12 @@ -57,4 +57,4 @@ source-repository head type: git- location: git://github.com/yesodweb/hamlet.git+ location: git://github.com/yesodweb/shakespeare.git
test/ShakespeareTextTest.hs view
@@ -46,10 +46,10 @@ ] - , it "textFileDebug" $ do + , it "textFileReload" $ do let var = "var" let urlp = (Home, [(pack "p", pack "q")]) - flip telper $(textFileDebug "test/texts/external1.text") $ unlines + flip telper $(textFileReload "test/texts/external1.text") $ unlines [ "שלום" , var , "url" @@ -58,9 +58,9 @@ ] {- TODO - , it "textFileDebugChange" $ do + , it "textFileReload" $ do let var = "somevar" - test result = telper result $(textFileDebug "test/texts/external2.text") + test result = telper result $(textFileReload "test/texts/external2.text") writeFile "test/texts/external2.text" "var #{var} = 1;" test "var somevar = 1;" writeFile "test/texts/external2.text" "var #{var} = 2;"