shakespeare 2.0.21 → 2.0.22
raw patch · 4 files changed
+30/−4 lines, 4 files
Files
- ChangeLog.md +4/−0
- Text/Shakespeare/Text.hs +22/−3
- shakespeare.cabal +1/−1
- test/Text/Shakespeare/TextSpec.hs +3/−0
ChangeLog.md view
@@ -1,5 +1,9 @@ # ChangeLog for shakespeare +### 2.0.22++* Add `stextFile` to `Text.Shakespeare.Text`, which can be used to produce `Text` directly in the same way `shamletFile` can be used to produce `Html` directly. [#240](https://github.com/yesodweb/shakespeare/pull/240)+ ### 2.0.21 * Support for GHC 8.8
Text/Shakespeare/Text.hs view
@@ -28,6 +28,7 @@ , ToText (..) , renderTextUrl , stext+ , stextFile , text , textFile , textFileDebug@@ -78,15 +79,25 @@ , unwrap = unWrapExp } --stext, lt, st, text, lbt, sbt :: QuasiQuoter-stext = +-- | "Simple text" quasi-quoter. May only be used to generate expressions.+--+-- Generated expressions have type 'TL.Text'.+--+-- @+-- >>> do let x = "world"+-- 'Data.Text.Lazy.IO.putStrLn' ['stext'|Hello, #{x}!|]+-- Hello, world!+-- @+stext :: QuasiQuoter+stext = QuasiQuoter { quoteExp = \s -> do rs <- settings render <- [|toLazyText|] rendered <- shakespeareFromString rs { justVarInterpolation = True } s return (render `AppE` rendered) }++lt, st, text, lbt, sbt :: QuasiQuoter lt = stext st = @@ -138,6 +149,14 @@ textFileReload fp = do rs <- settings shakespeareFileReload rs fp++-- | Like 'stext', but reads an external file at compile-time.+--+-- @since 2.0.22+stextFile :: FilePath -> Q Exp+stextFile fp = do+ rs <- settings+ [|toLazyText $(shakespeareFile rs { justVarInterpolation = True } fp)|] -- | codegen is designed for generating Yesod code, including templates -- So it uses different interpolation characters that won't clash with templates.
shakespeare.cabal view
@@ -1,5 +1,5 @@ name: shakespeare-version: 2.0.21+version: 2.0.22 license: MIT license-file: LICENSE author: Michael Snoyman <michael@snoyman.com>
test/Text/Shakespeare/TextSpec.hs view
@@ -68,6 +68,9 @@ writeFile "test/texts/external2.text" "var #{var} = 1;" -} + it "stextFile" $ do + let var = "somevar" + TL.toStrict $(stextFile "test/texts/external2.text") @=? pack "var somevar = 2;" it "text module names" $ let foo = "foo"