packages feed

jmacro 0.3.1 → 0.3.2

raw patch · 3 files changed

+50/−7 lines, 3 filesdep +haskell-src-extsdep +haskell-src-exts-qqdep −haskell-src-meta

Dependencies added: haskell-src-exts, haskell-src-exts-qq

Dependencies removed: haskell-src-meta

Files

+ Language/Javascript/JMacro/ParseTH.hs view
@@ -0,0 +1,41 @@+module Language.Javascript.JMacro.ParseTH where++--import Language.Haskell.Meta.Parse+import qualified Language.Haskell.TH as TH+import Language.Haskell.Exts.Translate+import Language.Haskell.Exts.Parser+import Language.Haskell.Exts.Extension+import Language.Haskell.Exts.Annotated.Fixity+import qualified Language.Haskell.Exts.Syntax as Hs++parseHSExp :: String -> Either String TH.Exp+parseHSExp = fmap toExp . parseResultToEither . parseExpWithMode myDefaultParseMode++--for Language.Haskell.Meta+--parseHSExp = parseExp++parseResultToEither :: ParseResult a -> Either String a+parseResultToEither (ParseOk a) = Right a+parseResultToEither (ParseFailed loc e)+  = let line = Hs.srcLine loc - 1+    in Left (unlines [show line,show loc,e])++myDefaultParseMode :: ParseMode+myDefaultParseMode = ParseMode+  {parseFilename = []+  ,extensions = myDefaultExtensions+  ,ignoreLanguagePragmas = False+  ,fixities = baseFixities+  ,ignoreLinePragmas = False}++myDefaultExtensions :: [Extension]+myDefaultExtensions = [PostfixOperators+                      ,QuasiQuotes+                      ,UnicodeSyntax+                      ,PatternSignatures+                      ,MagicHash+                      ,ForeignFunctionInterface+                      ,TemplateHaskell+                      ,RankNTypes+                      ,MultiParamTypeClasses+                      ,RecursiveDo]
Language/Javascript/JMacro/QQ.hs view
@@ -22,7 +22,7 @@ import Data.Generics(extQ,Data) import qualified Data.Map as M -import Language.Haskell.Meta.Parse+--import Language.Haskell.Meta.Parse import qualified Language.Haskell.TH as TH import Language.Haskell.TH(mkName) import qualified Language.Haskell.TH.Lib as TH@@ -37,6 +37,7 @@ import Text.Regex.PCRE.Light (compileM)  import Language.Javascript.JMacro.Base+import Language.Javascript.JMacro.ParseTH  -- import Debug.Trace @@ -154,14 +155,14 @@                          jm2th s2                          ] -          handleStat (AntiStat s) = case parseExp s of+          handleStat (AntiStat s) = case parseHSExp s of                                       Right ans -> Just $ TH.appE (TH.varE (mkName "toStat"))                                                                   (return ans)                                       Left err -> Just $ fail err           handleStat _ = Nothing            handleExpr :: JExpr -> Maybe (TH.ExpQ)-          handleExpr (AntiExpr s) = case parseExp s of+          handleExpr (AntiExpr s) = case parseHSExp s of                                       Right ans -> Just $ TH.appE (TH.varE (mkName "toJExpr")) (return ans)                                       Left err -> Just $ fail err           handleExpr (ValExpr (JFunc is' s)) = Just $@@ -440,7 +441,7 @@         x <- (try (symbol "`(") >> anyChar `manyTill` try (symbol ")`"))         either (fail . ("Bad AntiQuotation: \n" ++))                (const (return x))-               (parseExp x)+               (parseHSExp x)  --args :: JMParser [JExpr] --args = parens $ commaSep expr@@ -498,7 +499,7 @@          x <- (try (symbol "`(") >> anyChar `manyTill` try (string ")`"))          either (fail . ("Bad AntiQuotation: \n" ++))                 (const (return x))-                (parseExp x)+                (parseHSExp x)      valExpr = ValExpr <$> (num <|> negnum <|> str <|> try regex <|> list <|> hash <|> func <|> var) <?> "value"         where num = either JInt JDouble <$> try natFloat
jmacro.cabal view
@@ -1,5 +1,5 @@ name:                jmacro-version:             0.3.1+version:             0.3.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 >= 2.1, template-haskell >= 2.3, mtl, haskell-src-meta, bytestring >= 0.9, syb, pcre-light, json+  build-depends:     base >= 4, base < 5, containers, pretty, safe >= 0.2, parsec >= 2.1, template-haskell >= 2.3, mtl, haskell-src-exts, haskell-src-exts-qq, bytestring >= 0.9, syb, pcre-light, json    exposed-modules:   Language.Javascript.JMacro                      Language.Javascript.JMacro.Util@@ -22,6 +22,7 @@                      Language.Javascript.JMacro.Rpc   other-modules:     Language.Javascript.JMacro.Base                      Language.Javascript.JMacro.QQ+                     Language.Javascript.JMacro.ParseTH   ghc-options:       -Wall   if impl(ghc >= 6.8)     ghc-options:     -fwarn-tabs