packages feed

command-qq 0.2.2.0 → 0.3.0.0

raw patch · 4 files changed

+21/−17 lines, 4 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

Files

CHANGELOG.md view
@@ -1,3 +1,8 @@+0.3.0.0+=======++  * Added another way to avoid variable expansion (`\\#{foo}` is replaced with `#{foo}`)+ 0.2.2.0 ======= 
command-qq.cabal view
@@ -1,5 +1,5 @@ name:                command-qq-version:             0.2.2.0+version:             0.3.0.0 synopsis:            Quasiquoters for external commands description:   Features:@@ -48,7 +48,7 @@ source-repository this   type:              git   location:          https://github.com/biegunka/command-qq-  tag:               0.2.2.0+  tag:               0.3.0.0  library   default-language:  Haskell2010
src/System/Command/QQ.hs view
@@ -135,22 +135,25 @@ substituteVars :: String -> Q Exp substituteVars = raw where   raw, var :: String -> Q Exp-  raw (break (== '#') -> parts) = case parts of-    (before, '#':'{' :after) -> [e| before ++ $(var after) |]-    (before, '#':'\\':after) -> [e| before ++ '#' : $(raw after) |]-    (before, '#':after)      -> [e| before ++ '#' : $(raw after) |]-    (before, [])             -> [e| before |]-    _                        -> fail "Should never happen"+  raw str = case break (== '\\') str of+    (before, '\\' : '\\' : after) -> [e| before ++ '\\' : $(raw after) |]+    (before, '\\' : '#' : '{' : after) -> [e| before ++ '#' : '{' : $(raw after) |]+    (_, _) -> case break (== '#') str of+      (before, '#' : '{' : after)  -> [e| before ++ $(var after) |]+      (before, '#' : '\\' : after) -> [e| before ++ '#' : $(raw after) |]+      (before, '#' : after)        -> [e| before ++ '#' : $(raw after) |]+      (before, [])                 -> [e| before |]+      _                            -> fail "Should never happen"    var (break (== '}') -> parts) = case parts of-     (b:efore, '}':after)-        | isLower b                    -> external (VarE (mkName (b:efore))) after-        | isUpper b                    -> external (ConE (mkName (b:efore))) after+     (b : efore, '}' : after)+        | isLower b                     -> external (VarE (mkName (b:efore))) after+        | isUpper b                     -> external (ConE (mkName (b:efore))) after         | Just i <- readMaybe (b:efore) -> external (LitE (IntegerL i)) after         | Just d <- readMaybe (b:efore) -> external (LitE (RationalL (toRational (d :: Double)))) after         | Just c <- readMaybe (b:efore) -> external (LitE (CharL c)) after         | Just s <- readMaybe (b:efore) -> external (LitE (StringL s)) after-     (before, _)                       -> fail $ "Invalid name: " ++ before+     (before, _)                        -> fail $ "Invalid name: " ++ before    external :: Exp -> String -> Q Exp   external e after = [e| embed $(return e) ++ $(raw after) |]
src/System/Command/QQ/Predef.hs view
@@ -17,12 +17,9 @@ awk :: QuasiQuoter awk = quoter $ callCommand "awk" [] - -- | @ghci@ interpreter ghci :: QuasiQuoter-ghci =-  quoter $ callCommand "ghc" ["-ignore-dot-ghci", "-e"]-+ghci = quoter $ callCommand "ghc" ["-ignore-dot-ghci", "-e"]  -- | @perl@ interpreter perl :: QuasiQuoter@@ -31,7 +28,6 @@ -- | @ruby@ interpreter ruby :: QuasiQuoter ruby = interpreter "ruby"-  -- | @python@ interpreter python :: QuasiQuoter