HJavaScript 0.4.6 → 0.4.7
raw patch · 2 files changed
+19/−3 lines, 2 filesdep ~prettyPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: pretty
API changes (from Hackage documentation)
- Language.HJavaScript.Syntax: instance [overlap ok] (IsClass c) => IsDeref (Exp c)
- Language.HJavaScript.Syntax: instance [overlap ok] (IsClass c) => IsDeref c
- Language.HJavaScript.Syntax: instance [overlap ok] (IsClass c) => IsFeature c
- Language.HJavaScript.Syntax: instance [overlap ok] (IsClass c) => IsNullable c
- Language.HJavaScript.Syntax: instance [overlap ok] (IsClass c) => JType c
- Language.HJavaScript.Syntax: instance [overlap ok] (IsExp e Bool) => IsJBool e
- Language.HJavaScript.Syntax: instance [overlap ok] (IsExp e Float) => IsJFloat e
- Language.HJavaScript.Syntax: instance [overlap ok] (IsExp e Int) => IsJInt e
- Language.HJavaScript.Syntax: instance [overlap ok] (IsExp e String) => IsJString e
- Language.HJavaScript.Syntax: instance [overlap ok] (JShow a) => JShow (Exp a)
- Language.HJavaScript.Syntax: instance [overlap ok] (JType t) => ParamType t
- Language.HJavaScript.Syntax: instance [overlap ok] (ParamType (t1, t2)) => FormalParams (Var t1, Var t2) (t1, t2)
- Language.HJavaScript.Syntax: instance [overlap ok] (ParamType (t1, t2, t3)) => FormalParams (Var t1, Var t2, Var t3) (t1, t2, t3)
- Language.HJavaScript.Syntax: instance [overlap ok] (ParamType (t1, t2, t3, t4)) => FormalParams (Var t1, Var t2, Var t3, Var t4) (t1, t2, t3, t4)
- Language.HJavaScript.Syntax: instance [overlap ok] (ParamType (t1, t2, t3, t4, t5)) => FormalParams (Var t1, Var t2, Var t3, Var t4, Var t5) (t1, t2, t3, t4, t5)
- Language.HJavaScript.Syntax: instance [overlap ok] (ParamType t) => FormalParams (Var t) t
+ Language.HJavaScript.Syntax: instance [overlap ok] IsClass c => IsDeref (Exp c)
+ Language.HJavaScript.Syntax: instance [overlap ok] IsClass c => IsDeref c
+ Language.HJavaScript.Syntax: instance [overlap ok] IsClass c => IsFeature c
+ Language.HJavaScript.Syntax: instance [overlap ok] IsClass c => IsNullable c
+ Language.HJavaScript.Syntax: instance [overlap ok] IsClass c => JType c
+ Language.HJavaScript.Syntax: instance [overlap ok] IsExp e Bool => IsJBool e
+ Language.HJavaScript.Syntax: instance [overlap ok] IsExp e Float => IsJFloat e
+ Language.HJavaScript.Syntax: instance [overlap ok] IsExp e Int => IsJInt e
+ Language.HJavaScript.Syntax: instance [overlap ok] IsExp e String => IsJString e
+ Language.HJavaScript.Syntax: instance [overlap ok] JShow a => JShow (Exp a)
+ Language.HJavaScript.Syntax: instance [overlap ok] JType t => ParamType t
+ Language.HJavaScript.Syntax: instance [overlap ok] ParamType (t1, t2) => FormalParams (Var t1, Var t2) (t1, t2)
+ Language.HJavaScript.Syntax: instance [overlap ok] ParamType (t1, t2, t3) => FormalParams (Var t1, Var t2, Var t3) (t1, t2, t3)
+ Language.HJavaScript.Syntax: instance [overlap ok] ParamType (t1, t2, t3, t4) => FormalParams (Var t1, Var t2, Var t3, Var t4) (t1, t2, t3, t4)
+ Language.HJavaScript.Syntax: instance [overlap ok] ParamType (t1, t2, t3, t4, t5) => FormalParams (Var t1, Var t2, Var t3, Var t4, Var t5) (t1, t2, t3, t4, t5)
+ Language.HJavaScript.Syntax: instance [overlap ok] ParamType t => FormalParams (Var t) t
- Language.HJavaScript.Syntax: call :: (Args e t) => Exp (t -> r) -> e -> Exp r
+ Language.HJavaScript.Syntax: call :: Args e t => Exp (t -> r) -> e -> Exp r
- Language.HJavaScript.Syntax: class (Show e) => Args e t | e -> t
+ Language.HJavaScript.Syntax: class Show e => Args e t | e -> t
- Language.HJavaScript.Syntax: class (Show c) => IsClass c
+ Language.HJavaScript.Syntax: class Show c => IsClass c
- Language.HJavaScript.Syntax: class (Show r) => IsDeref r
+ Language.HJavaScript.Syntax: class Show r => IsDeref r
- Language.HJavaScript.Syntax: class (Show a) => IsFeature a
+ Language.HJavaScript.Syntax: class Show a => IsFeature a
- Language.HJavaScript.Syntax: class (IsExp e Bool) => IsJBool e
+ Language.HJavaScript.Syntax: class IsExp e Bool => IsJBool e
- Language.HJavaScript.Syntax: class (IsExp e Float) => IsJFloat e
+ Language.HJavaScript.Syntax: class IsExp e Float => IsJFloat e
- Language.HJavaScript.Syntax: class (IsExp e Int) => IsJInt e
+ Language.HJavaScript.Syntax: class IsExp e Int => IsJInt e
- Language.HJavaScript.Syntax: class (IsExp e String) => IsJString e
+ Language.HJavaScript.Syntax: class IsExp e String => IsJString e
- Language.HJavaScript.Syntax: deref :: (IsDeref d) => String -> d -> Exp t
+ Language.HJavaScript.Syntax: deref :: IsDeref d => String -> d -> Exp t
- Language.HJavaScript.Syntax: derefVar :: (IsDeref d) => String -> d -> Var a
+ Language.HJavaScript.Syntax: derefVar :: IsDeref d => String -> d -> Var a
- Language.HJavaScript.Syntax: jshow :: (JShow a) => a -> JString
+ Language.HJavaScript.Syntax: jshow :: JShow a => a -> JString
- Language.HJavaScript.Syntax: methodCallNoArgs :: (IsDeref d) => String -> d -> Exp t
+ Language.HJavaScript.Syntax: methodCallNoArgs :: IsDeref d => String -> d -> Exp t
- Language.HJavaScript.Syntax: mkFParams :: (FormalParams a t) => (a -> b) -> Int -> a
+ Language.HJavaScript.Syntax: mkFParams :: FormalParams a t => (a -> b) -> Int -> a
- Language.HJavaScript.Syntax: showsFParams :: (FormalParams a t) => a -> ShowS
+ Language.HJavaScript.Syntax: showsFParams :: FormalParams a t => a -> ShowS
- Language.HJavaScript.Syntax: toExp :: (IsExp e t) => e -> Exp t
+ Language.HJavaScript.Syntax: toExp :: IsExp e t => e -> Exp t
- Language.HJavaScript.Syntax: toJBool :: (IsJBool e) => e -> Exp Bool
+ Language.HJavaScript.Syntax: toJBool :: IsJBool e => e -> Exp Bool
- Language.HJavaScript.Syntax: toJFloat :: (IsJFloat e) => e -> Exp Float
+ Language.HJavaScript.Syntax: toJFloat :: IsJFloat e => e -> Exp Float
- Language.HJavaScript.Syntax: toJInt :: (IsJInt e) => e -> Exp Int
+ Language.HJavaScript.Syntax: toJInt :: IsJInt e => e -> Exp Int
- Language.HJavaScript.Syntax: toJString :: (IsJString e) => e -> Exp String
+ Language.HJavaScript.Syntax: toJString :: IsJString e => e -> Exp String
- Language.HJavaScript.Syntax: v2e :: (VarsToExps v e) => v -> e
+ Language.HJavaScript.Syntax: v2e :: VarsToExps v e => v -> e
- Language.HJavaScript.Syntax: voidMethodCallNoArgs :: (IsDeref d) => String -> d -> Stmt ()
+ Language.HJavaScript.Syntax: voidMethodCallNoArgs :: IsDeref d => String -> d -> Stmt ()
Files
- HJavaScript.cabal +1/−1
- src/Language/HJavaScript/Syntax.hs +18/−2
HJavaScript.cabal view
@@ -1,5 +1,5 @@ Name: HJavaScript-Version: 0.4.6+Version: 0.4.7 License: BSD3 Author: Joel Bjornson, Niklas Broberg Maintainer: joel.bjornson@gmail.com, nibro@cs.chalmers.se
src/Language/HJavaScript/Syntax.hs view
@@ -69,6 +69,7 @@ ) where import Text.PrettyPrint.HughesPJ+import Text.Printf(printf) import Data.Char import Data.Maybe @@ -375,7 +376,7 @@ sDot = showString "." sc = showString ";" sNl = showString "\n"-sJtr s = showString "'" . showString s . showString "'"+sJtr s = showString "'" . showString (jEscape s) . showString "'" sMaybe Nothing = id sMaybe (Just s) = showString s @@ -643,7 +644,7 @@ text "true" else text "false"- JString s -> quotes $ text s+ JString s -> quotes $ text (jEscape s) JRec e1 e2 -> text "{fst:" <> ppExp e1 <> comma <> text "snd:" <> ppExp e2 <> text "}" @@ -718,3 +719,18 @@ ppMaybe (Just s) = text $ show s ppMaybe Nothing = empty++-- | escape a Haskell String so that it is suitable for use as a+-- javascript string literal.+jEscape :: String -> String+jEscape [] = []+jEscape ('\b' : cs) = "\\b" ++ jEscape cs+jEscape ('\f' : cs) = "\\f" ++ jEscape cs+jEscape ('\n' : cs) = "\\n" ++ jEscape cs+jEscape ('\r' : cs) = "\\r" ++ jEscape cs+jEscape ('\t' : cs) = "\\t" ++ jEscape cs+jEscape ('\\' : cs) = "\\\\" ++ jEscape cs+jEscape ('\'' : cs) = "\\'" ++ jEscape cs+jEscape (c : cs) + | ' ' <= c && c <= '~' = c : jEscape cs+ | otherwise = (printf "\\u%.4X" c) ++ jEscape cs