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