packages feed

shakespeare 2.0.3 → 2.0.4

raw patch · 4 files changed

+40/−2 lines, 4 files

Files

ChangeLog.md view
@@ -1,3 +1,7 @@+### 2.0.4++* [Add multiline literal aligned with bar #148](https://github.com/yesodweb/shakespeare/pull/148)+ ### 2.0.3  * `cassiusMixin` added
Text/Shakespeare/Text.hs view
@@ -14,6 +14,8 @@     , textFileReload     , st -- | strict text     , lt -- | lazy text, same as stext :)+    , sbt -- | strict text whose left edge is aligned with bar ('|')+    , lbt -- | lazy text, whose left edge is aligned with bar ('|')     -- * Yesod code generation     , codegen     , codegenSt@@ -57,7 +59,7 @@   }  -stext, lt, st, text :: QuasiQuoter+stext, lt, st, text, lbt, sbt :: QuasiQuoter stext =    QuasiQuoter { quoteExp = \s -> do     rs <- settings@@ -80,6 +82,27 @@     quoteExp (shakespeare rs) $ filter (/='\r') s     } +dropBar :: [TL.Text] -> [TL.Text]+dropBar [] = []+dropBar (c:cx) = c:dropBar' cx+  where+    dropBar' txt = reverse $ drop 1 $ map (TL.drop 1 . TL.dropWhile (/= '|')) $ reverse txt++lbt = +  QuasiQuoter { quoteExp = \s -> do+    rs <- settings+    render <- [|TL.unlines . dropBar . TL.lines . toLazyText|]+    rendered <- shakespeareFromString rs { justVarInterpolation = True } s+    return (render `AppE` rendered)+    }++sbt = +  QuasiQuoter { quoteExp = \s -> do+    rs <- settings+    render <- [|TL.toStrict . TL.unlines . dropBar . TL.lines . toLazyText|]+    rendered <- shakespeareFromString rs { justVarInterpolation = True } s+    return (render `AppE` rendered)+    }  textFile :: FilePath -> Q Exp textFile fp = do
shakespeare.cabal view
@@ -1,5 +1,5 @@ name:            shakespeare-version:         2.0.3+version:         2.0.4 license:         MIT license-file:    LICENSE author:          Michael Snoyman <michael@snoyman.com>
test/Text/Shakespeare/TextSpec.hs view
@@ -101,6 +101,17 @@       simpT "2" [stext|#{ show $ fst $ snd val }|]
       simpT "2" [stext|#{ show $ fst $ snd $ val}|]
 
+    it "aligned text with bar" $ do
+      let val = 3 :: Int
+      simpT "hoge\r\n3\r\n1\r\n" (TL.fromStrict [sbt|hoge
+                                                    |#{val}
+                                                    |1
+                                                    |])
+      simpT "hoge\r\n3\r\n1\r\n" [lbt|hoge
+                                     |#{val}
+                                     |1
+                                     |]
+
 simpT :: String -> TL.Text -> Assertion
 simpT a b = pack a @=? TL.toStrict b