packages feed

shakespeare 2.0.14 → 2.0.14.1

raw patch · 4 files changed

+30/−12 lines, 4 filesnew-uploaderPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

Files

ChangeLog.md view
@@ -1,3 +1,7 @@+### 2.0.14.1++* Handle expressions with infix operator and trailing spaces [#211](https://github.com/yesodweb/shakespeare/issues/211)+ ### 2.0.14  * Fix Cassius and Lucius reload mode [#206](https://github.com/yesodweb/shakespeare/issues/206)
Text/Shakespeare/Base.hs view
@@ -94,14 +94,13 @@   return $ DerefTuple x  parseDeref :: UserParser a Deref-parseDeref = skipMany (oneOf " \t") >> (derefList <|>-                                        derefTuple <|> (do-    x <- derefSingle-    (derefInfix x) <|> (do-        res <- deref' $ (:) x-        skipMany $ oneOf " \t"-        return res)))+parseDeref = do+    skipMany (oneOf " \t")+    derefList <|> derefTuple <|> derefOther   where+    derefOther = do+        x <- derefSingle+        derefInfix x <|> derefPrefix x     delim = (many1 (char ' ') >> return())             <|> lookAhead (oneOf "(\"" >> return ())     derefOp = try $ do@@ -115,6 +114,10 @@         | isAscii c = c `elem` "!#$%&*+./<=>?@\\^|-~:"         | otherwise = isSymbol c || isPunctuation c +    derefPrefix x = do+        res <- deref' $ (:) x+        skipMany $ oneOf " \t"+        return res     derefInfix x = try $ do         _ <- delim         xs <- many $ try $ derefSingle >>= \x' -> delim >> return x'@@ -122,9 +125,10 @@         -- special handling for $, which we don't deal with         when (op == "$") $ fail "don't handle $"         let op' = DerefIdent $ Ident op-        ys <- many1 $ delim >> derefSingle+        ys <- many1 $ try $ delim >> derefSingle+        skipMany $ oneOf " \t"         return $ DerefBranch (DerefBranch op' $ foldl1 DerefBranch $ x : xs) (foldl1 DerefBranch ys)-    derefSingle = derefTuple <|> derefList <|> derefOp <|> derefParens <|> numeric <|> strLit<|> ident+    derefSingle = derefTuple <|> derefList <|> derefOp <|> derefParens <|> numeric <|> strLit <|> ident     deref' lhs =         dollar <|> derefSingle'                <|> return (foldl1 DerefBranch $ lhs [])
shakespeare.cabal view
@@ -1,5 +1,5 @@ name:            shakespeare-version:         2.0.14+version:         2.0.14.1 license:         MIT license-file:    LICENSE author:          Michael Snoyman <michael@snoyman.com>
test/Text/Shakespeare/BaseSpec.hs view
@@ -3,8 +3,11 @@  import Test.Hspec import Text.Shakespeare-import Text.ParserCombinators.Parsec (parse, ParseError, (<|>))-import Text.Shakespeare.Base (parseVarString, parseUrlString, parseIntString)+import Text.ParserCombinators.Parsec+       ((<|>), ParseError, parse, runParser)+import Text.Shakespeare.Base+       (Deref(..), Ident(..), parseDeref, parseVarString, parseUrlString,+        parseIntString) import Language.Haskell.TH.Syntax (Exp (VarE)) import Data.Text.Lazy.Builder (toLazyText, fromLazyText) import Data.Text.Lazy (pack)@@ -22,6 +25,13 @@      run (varString <|> urlString <|> intString) "@{url} #{var}" `shouldBe` Right "@{url}"   -}++  it "parseDeref parse expressions with infix operator and trailing spaces" $ do+    runParser parseDeref () "" " a + b \t " `shouldBe`+      (Right+         (DerefBranch+            (DerefBranch (DerefIdent (Ident "+")) (DerefIdent (Ident "a")))+            (DerefIdent (Ident "b"))))    it "preFilter off" $ do     preFilterN defaultShakespeareSettings template