jmacro 0.5.2 → 0.5.5
raw patch · 4 files changed
+14/−8 lines, 4 filesdep +regex-posixdep −pcre-lightdep ~basePVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependencies added: regex-posix
Dependencies removed: pcre-light
Dependency ranges changed: base
API changes (from Hackage documentation)
+ Language.Javascript.JMacro.TypeCheck: (<<:>) :: TMonad JType -> TMonad JType -> TMonad ()
+ Language.Javascript.JMacro.TypeCheck: (=.=) :: JType -> JType -> TMonad JType
+ Language.Javascript.JMacro.TypeCheck: addToStack :: Ord a => a -> [Set a] -> [Set a]
+ Language.Javascript.JMacro.TypeCheck: cannonicalizeConstraints :: [Constraint] -> TMonad [Constraint]
+ Language.Javascript.JMacro.TypeCheck: evalTMonad :: TMonad a -> Either String a
+ Language.Javascript.JMacro.TypeCheck: evalTypecheck :: JTypeCheck a => a -> Either String [Map Ident String]
+ Language.Javascript.JMacro.TypeCheck: frame2VarRefs :: Set t -> [(Maybe a, t)]
+ Language.Javascript.JMacro.TypeCheck: isLeft :: Either t t1 -> Bool
+ Language.Javascript.JMacro.TypeCheck: partitionCs :: [Constraint] -> ([JType], [JType])
+ Language.Javascript.JMacro.TypeCheck: prettyType :: JType -> TMonad [Char]
+ Language.Javascript.JMacro.TypeCheck: resolveType :: JType -> TMonad JType
+ Language.Javascript.JMacro.TypeCheck: resolveTypeShallow :: JType -> TMonad JType
+ Language.Javascript.JMacro.TypeCheck: runTMonad :: TMonad a -> (Either String a, TCState)
+ Language.Javascript.JMacro.TypeCheck: runTypecheck :: JTypeCheck a => a -> Either String [Char]
+ Language.Javascript.JMacro.TypeCheck: runTypecheckFull :: JTypeCheck a => a -> (Either String ([Char], [Map Ident String]), TCState)
+ Language.Javascript.JMacro.TypeCheck: runTypecheckRaw :: JTypeCheck a => a -> (Either String JType, TCState)
+ Language.Javascript.JMacro.TypeCheck: tcStateEmpty :: TCState
+ Language.Javascript.JMacro.TypeCheck: typecheckMain :: JTypeCheck a => a -> TMonad JType
+ Language.Javascript.JMacro.TypeCheck: typecheckWithBlock :: (JsToDoc a, JMacro a, JTypeCheck a) => a -> TMonad JType
- Language.Javascript.JMacro: class ToJExpr a
+ Language.Javascript.JMacro: class ToJExpr a where toJExprFromList = ValExpr . JList . map toJExpr
Files
- Language/Javascript/JMacro/Base.hs +1/−1
- Language/Javascript/JMacro/QQ.hs +10/−4
- Language/Javascript/JMacro/Util.hs +1/−1
- jmacro.cabal +2/−2
Language/Javascript/JMacro/Base.hs view
@@ -46,7 +46,7 @@ import qualified Data.Set as S import qualified Data.Map as M import Data.Generics-import Data.Monoid+import Data.Monoid(Monoid, mappend, mempty) import Numeric(showHex) import Safe
Language/Javascript/JMacro/QQ.hs view
@@ -37,12 +37,14 @@ import qualified Text.ParserCombinators.Parsec.Token as P import Text.ParserCombinators.Parsec.Language(javaStyle) -import Text.Regex.PCRE.Light (compileM)+import Text.Regex.Posix.String import Language.Javascript.JMacro.Base import Language.Javascript.JMacro.Types import Language.Javascript.JMacro.ParseTH +import System.IO.Unsafe+ import Web.Encodings --import Debug.Trace@@ -186,7 +188,7 @@ Left err -> Just $ fail err handleExpr (ValExpr (JFunc is' s)) = Just $ TH.appE (TH.varE $ mkName "jLam")- (TH.lamE (map (TH.varP . mkName) is)+ (TH.lamE (map (TH.varP . mkName . fixIdent) is) (jm2th $ antiIdents is s)) where is = map (\(StrI i) -> i) is' @@ -549,6 +551,10 @@ --args :: JMParser [JExpr] --args = parens $ commaSep expr +compileRegex s = unsafePerformIO $ compile co eo s+ where co = compExtended+ eo = execBlank+ expr :: JMParser JExpr expr = do e <- exprWithIf@@ -628,9 +634,9 @@ str = JStr <$> (myStringLiteral '"' <|> myStringLiteral '\'') regex = do s <- regexLiteral --myStringLiteralNoBr '/'- case compileM (BS.pack s) [] of+ case compileRegex s of Right _ -> return (JRegEx s)- Left err -> fail ("Parse error in regexp: " ++ err)+ Left err -> fail ("Parse error in regexp: " ++ show err) list = JList <$> brackets' (commaSep expr) hash = JHash . M.fromList <$> braces' (commaSep propPair) var = JVar <$> ident'
Language/Javascript/JMacro/Util.hs view
@@ -1,6 +1,6 @@ module Language.Javascript.JMacro.Util where -import Prelude hiding (tail, init, head, last, minimum, maximum, foldr1, foldl1, (!!), read)+import Prelude hiding (tail, init, head, last, minimum, maximum, foldr1, foldl1, (!!), read, (<), (&&)) import qualified Prelude as P import Language.Javascript.JMacro.Base
jmacro.cabal view
@@ -1,5 +1,5 @@ name: jmacro-version: 0.5.2+version: 0.5.5 synopsis: QuasiQuotation library for programmatic generation of Javascript code. description: Javascript syntax, functional syntax, hygienic names, compile-time guarantees of syntactic correctness, limited typechecking. Additional documentation available at <http://www.haskell.org/haskellwiki/Jmacro> 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, web-encodings > 0.2+ 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, json, web-encodings > 0.2, regex-posix > 0.9 exposed-modules: Language.Javascript.JMacro Language.Javascript.JMacro.Util