shakespeare 1.2.0.1 → 1.2.0.2
raw patch · 3 files changed
+21/−5 lines, 3 files
Files
- Text/Shakespeare.hs +5/−1
- Text/Shakespeare/Base.hs +15/−3
- shakespeare.cabal +1/−1
Text/Shakespeare.hs view
@@ -381,7 +381,11 @@ shakespeareFromString :: ShakespeareSettings -> String -> Q Exp shakespeareFromString r str = do- s <- qRunIO $ preFilter Nothing r str+ s <- qRunIO $ preFilter Nothing r $+#ifdef WINDOWS+ filter (/='\r')+#endif+ str contentsToShakespeare r $ contentFromString r s shakespeareFile :: ShakespeareSettings -> FilePath -> Q Exp
Text/Shakespeare/Base.hs view
@@ -25,7 +25,7 @@ import Language.Haskell.TH.Syntax import Language.Haskell.TH (appE)-import Data.Char (isUpper, isSymbol)+import Data.Char (isUpper, isSymbol, isPunctuation, isAscii) import Text.ParserCombinators.Parsec import Text.Parsec.Prim (Parsec) import Data.List (intercalate)@@ -109,10 +109,16 @@ x <- many1 $ noneOf " \t\n\r()" _ <- char ')' return $ DerefIdent $ Ident x++ -- See: http://www.haskell.org/onlinereport/haskell2010/haskellch2.html#x7-160002.2+ isOperatorChar c+ | isAscii c = c `elem` "!#$%&*+./<=>?@\\^|-~:"+ | otherwise = isSymbol c || isPunctuation c+ derefInfix x = try $ do _ <- delim xs <- many $ try $ derefSingle >>= \x' -> delim >> return x'- op <- many1 (satisfy $ \c -> isSymbol c || c `elem` "-") <?> "operator"+ op <- many1 (satisfy isOperatorChar) <?> "operator" -- special handling for $, which we don't deal with when (op == "$") $ fail "don't handle $" let op' = DerefIdent $ Ident op@@ -275,4 +281,10 @@ readUtf8File fp = do h <- SIO.openFile fp SIO.ReadMode SIO.hSetEncoding h SIO.utf8_bom- TIO.hGetContents h+ ret <- TIO.hGetContents h + return $+#ifdef WINDOWS+ TL.filter ('\r'/=) ret+#else+ ret+#endif
shakespeare.cabal view
@@ -1,5 +1,5 @@ name: shakespeare-version: 1.2.0.1+version: 1.2.0.2 license: MIT license-file: LICENSE author: Michael Snoyman <michael@snoyman.com>