packages feed

shakespeare 1.0.1 → 1.0.1.1

raw patch · 4 files changed

+65/−5 lines, 4 filesdep ~hspecPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: hspec

API changes (from Hackage documentation)

Files

Text/Shakespeare/Base.hs view
@@ -35,7 +35,6 @@ import qualified System.IO as SIO import qualified Data.Text.Lazy.IO as TIO import Control.Monad (when)-import Control.Applicative ((<*))  newtype Ident = Ident String     deriving (Show, Eq, Read, Data, Typeable)@@ -111,7 +110,7 @@             return $ DerefIdent $ Ident x     derefInfix x = try $ do         _ <- delim-        xs <- many $ try $ derefSingle <* delim+        xs <- many $ try $ derefSingle >>= \x' -> delim >> return x'         op <- many1 (satisfy $ \c -> isSymbol c || c `elem` "-") <?> "operator"         -- special handling for $, which we don't deal with         when (op == "$") $ fail "don't handle $"
shakespeare.cabal view
@@ -1,5 +1,5 @@ name:            shakespeare-version:         1.0.1+version:         1.0.1.1 license:         MIT license-file:    LICENSE author:          Michael Snoyman <michael@snoyman.com>@@ -43,6 +43,8 @@ test-suite test     hs-source-dirs: test     main-is: ../test.hs+    other-modules:  ShakespeareBaseTest+     type: exitcode-stdio-1.0      ghc-options:   -Wall@@ -50,7 +52,7 @@                  , base             >= 4       && < 5                  , parsec           >= 2       && < 4                  , HUnit-                 , hspec            >= 0.8     && < 1.2+                 , hspec            >= 0.8     && < 1.3                  , text             >= 0.7     && < 0.12  
test.hs view
@@ -2,4 +2,4 @@ import ShakespeareBaseTest (specs)  main :: IO ()-main = hspecX $ specs+main = hspec $ specs
+ test/ShakespeareBaseTest.hs view
@@ -0,0 +1,59 @@+module ShakespeareBaseTest (specs) where++import Test.HUnit hiding (Test)+import Test.Hspec.Monadic+import Test.Hspec.HUnit ()++import Text.ParserCombinators.Parsec (parse, ParseError, (<|>))+import Text.Shakespeare.Base (parseVarString, parseUrlString, parseIntString)+import Text.Shakespeare (preFilter, defaultShakespeareSettings, ShakespeareSettings(..), PreConvert(..), PreConversion(..))++-- run :: Text.Parsec.Prim.Parsec Text.Parsec.Pos.SourceName () c -> Text.Parsec.Pos.SourceName -> c++specs :: Specs+specs = describe "shakespeare-js" $ do+  it "parseStrings" $ do+    Right "%{var}" @=?  run varString "%{var}"+    Right "@{url}" @=?  run urlString "@{url}"+    Right "^{int}" @=?  run intString "^{int}"+    Right "@{url}" @=?  run (varString <|> urlString <|> intString) "@{url} #{var}"++  it "preFilter off" $ do+    str <- preFilter defaultShakespeareSettings template+    str @=? template++  it "preFilter on" $ do+    str <- preFilter preConversionSettings template+    "unchanged `#{var}` `@{url}` `^{int}`" @=? str++  it "preFilter ignore quotes" $ do+    str <- preFilter preConversionSettings templateQuote+    "unchanged '#{var}' `@{url}` '^{int}'" @=? str++  it "preFilter ignore comments" $ do+    str <- preFilter preConversionSettings templateCommented+    "unchanged & '#{var}' @{url} '^{int}'" @=? str++  where+    varString = parseVarString '%'+    urlString = parseUrlString '@' '?'+    intString = parseIntString '^'++    preConversionSettings = defaultShakespeareSettings {+      preConversion = Just PreConvert {+          preConvert = Id+        , preEscapeBegin = "`"+        , preEscapeEnd = "`"+        , preEscapeIgnoreBalanced = "'\""+        , preEscapeIgnoreLine = "&"+        }+    }+    template  = "unchanged #{var} @{url} ^{int}"+    templateQuote = "unchanged '#{var}' @{url} '^{int}'"+    templateCommented = "unchanged & '#{var}' @{url} '^{int}'"++    run parser str = eShowErrors $ parse parser str str++    eShowErrors :: Either ParseError c -> c+    eShowErrors = either (error . show) id+