packages feed

jmacro 0.4.1 → 0.4.2

raw patch · 3 files changed

+35/−12 lines, 3 filesdep +web-encodings

Dependencies added: web-encodings

Files

Language/Javascript/JMacro/Base.hs view
@@ -36,17 +36,24 @@   ) where import Prelude hiding (tail, init, head, last, minimum, maximum, foldr1, foldl1, (!!), read) import Control.Applicative hiding (empty)+import Control.Arrow (second)+import Control.Monad.State.Strict+import Control.Monad.Identity+ import Data.Function+import Data.Char (toLower) import Data.Maybe (fromMaybe) import qualified Data.Set as S import qualified Data.Map as M-import Text.PrettyPrint.HughesPJ-import Control.Monad.State.Strict-import Safe-import Control.Monad.Identity import Data.Generics import Data.Monoid +import Safe+import Text.JSON+import Text.PrettyPrint.HughesPJ++import Web.Encodings+ import Language.Javascript.JMacro.Types  {--------------------------------------------------------------------@@ -57,7 +64,11 @@  inIdentSupply f x = IS $ f (runIdentSupply x) -instance Data a => Data (IdentSupply a)+instance Data a => Data (IdentSupply a) where+    gunfold _ _ _ = error "gunfold IdentSupply"+    toConstr _ = error "toConstr IdentSupply"+    dataTypeOf _ = mkNoRepType "IdentSupply"+ instance Functor IdentSupply where     fmap f x = inIdentSupply (fmap f) x @@ -479,7 +490,7 @@     jsToDoc (JList xs) = brackets . fsep . punctuate comma $ map jsToDoc xs     jsToDoc (JDouble d) = double d     jsToDoc (JInt i) = integer i-    jsToDoc (JStr s) = text ("\""++s++"\"")+    jsToDoc (JStr s) = text ("\""++encodeJson s++"\"")     jsToDoc (JRegEx s) = text ("/"++s++"/")     jsToDoc (JHash m)             | M.null m = text "{}"@@ -577,8 +588,8 @@  instance ToJExpr Char where     toJExpr = ValExpr . JStr . (:[])-    toJExprFromList = ValExpr . JStr . escQuotes-        where escQuotes = tailDef "" . initDef "" . show+    toJExprFromList = ValExpr . JStr+--        where escQuotes = tailDef "" . initDef "" . show  instance (ToJExpr a, ToJExpr b) => ToJExpr (a,b) where     toJExpr (a,b) = ValExpr . JList $ [toJExpr a, toJExpr b]@@ -703,3 +714,14 @@  nullStat :: JStat nullStat = BlockStat []+++-- JSON instance+instance ToJExpr JSValue where+    toJExpr JSNull             = ValExpr $ JVar $ StrI "null"+    toJExpr (JSBool b)         = ValExpr $ JVar $ StrI $ map toLower (show b)+    toJExpr (JSRational b rat) = ValExpr $ JDouble $ realToFrac rat+    toJExpr (JSString s)       = ValExpr $ JStr $ fromJSString s+    toJExpr (JSArray vs)       = ValExpr $ JList $ map toJExpr vs+    toJExpr (JSObject obj)     = ValExpr $ JHash $ M.fromList $ map (second toJExpr) $ fromJSObject obj+
Language/Javascript/JMacro/QQ.hs view
@@ -40,6 +40,8 @@ import Language.Javascript.JMacro.Types import Language.Javascript.JMacro.ParseTH +import Web.Encodings+ import Debug.Trace  {--------------------------------------------------------------------@@ -675,14 +677,13 @@     _ <- char t     x <- concat <$> many myChar     _ <- char t-    return x+    return $ decodeJson x  where myChar = do          c <- noneOf [t]          case c of            '\\' -> do                   c2 <- anyChar                   return [c,c2]-           '\n' -> return "\\n"            _ -> return [c]  myStringLiteralNoBr :: Char -> JMParser String
jmacro.cabal view
@@ -1,5 +1,5 @@ name:                jmacro-version:             0.4.1+version:             0.4.2 synopsis:            QuasiQuotation library for programmatic generation of Javascript code. description:         Javascript syntax, functional syntax, hygienic names, compile-time guarantees of syntactic correctness, limited typechecking. category:            Language@@ -13,7 +13,7 @@   library-  build-depends:     base >= 4, base < 5, containers, pretty, safe >= 0.2, parsec > 3.0, template-haskell >= 2.3, mtl > 1.1 , haskell-src-exts, haskell-src-meta, bytestring >= 0.9, syb, pcre-light, json+  build-depends:     base >= 4, base < 5, containers, pretty, safe >= 0.2, parsec > 3.0, template-haskell >= 2.3, mtl > 1.1 , haskell-src-exts, haskell-src-meta, bytestring >= 0.9, syb, pcre-light, json, web-encodings > 0.2    exposed-modules:   Language.Javascript.JMacro                      Language.Javascript.JMacro.Util