packages feed

apiary-purescript 1.2.1 → 1.2.2

raw patch · 3 files changed

+16/−41 lines, 3 filesdep −template-haskelldep ~purescriptPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependencies removed: template-haskell

Dependency ranges changed: purescript

API changes (from Hackage documentation)

- Paths_apiary_purescript: getBinDir :: IO FilePath
- Paths_apiary_purescript: getDataDir :: IO FilePath
- Paths_apiary_purescript: getDataFileName :: FilePath -> IO FilePath
- Paths_apiary_purescript: getLibDir :: IO FilePath
- Paths_apiary_purescript: getLibexecDir :: IO FilePath
- Paths_apiary_purescript: getSysconfDir :: IO FilePath
- Paths_apiary_purescript: version :: Version
- Web.Apiary.PureScript: preludePath :: PureScriptConfig -> FilePath
+ Web.Apiary.PureScript: pureScriptPrefix :: PureScriptConfig -> [String]
- Web.Apiary.PureScript: PureScriptConfig :: [Pattern] -> FilePath -> FilePath -> Bool -> [FilePath] -> Options Compile -> PureScriptConfig
+ Web.Apiary.PureScript: PureScriptConfig :: [Pattern] -> FilePath -> Bool -> [FilePath] -> [String] -> Options Compile -> PureScriptConfig

Files

apiary-purescript.cabal view
@@ -1,5 +1,5 @@ name:                apiary-purescript-version:             1.2.1+version:             1.2.2 synopsis:            purescript compiler for apiary web framework. description:   example: <https://github.com/philopon/apiary/blob/master/examples/pureScript.hs>@@ -20,9 +20,8 @@   exposed-modules:     Web.Apiary.PureScript   other-modules:       Web.Apiary.PureScript.Internal   build-depends:       base                 >=4.6   && <4.8-                     , template-haskell                      , apiary               >=1.1   && <1.3-                     , purescript           ==0.6.2.*+                     , purescript           ==0.6.3.*                       , filepath             >=1.3   && <1.4                      , utf8-string          >=0.3   && <0.4
src/Web/Apiary/PureScript.hs view
@@ -14,7 +14,7 @@ import Data.Apiary.Compat(Proxy(..))  initPureScript :: MonadIO m => I.PureScriptConfig -> Initializer' m I.PureScript-initPureScript = initializer' . I.makePureScript+initPureScript = initializer' . liftIO . I.makePureScript  pureScript :: (Has I.PureScript exts, MonadIO m) => FilePath -> ActionT exts prms m () pureScript m = getExt (Proxy :: Proxy I.PureScript) >>= flip I.pureScript m
src/Web/Apiary/PureScript/Internal.hs view
@@ -1,6 +1,5 @@ {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TupleSections #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE DataKinds #-}@@ -8,11 +7,9 @@  module Web.Apiary.PureScript.Internal where -import System.FilePath(takeDirectory, (</>)) import qualified System.FilePath.Glob as G import qualified System.IO.UTF8 as U -import qualified Language.Haskell.TH as TH import qualified Language.PureScript as P  import Control.Monad.Apiary.Action(ActionT, contentType, string, bytes)@@ -28,30 +25,24 @@ import qualified Data.HashMap.Strict as H import qualified Text.Parsec.Error as P -import qualified Paths_apiary_purescript as Path- data PureScriptException     = ParseError   P.ParseError     | CompileError String     deriving (Show, Typeable) instance Exception PureScriptException -purescriptDatadir :: FilePath-purescriptDatadir = takeDirectory $(TH.stringE =<< TH.runIO Path.getDataDir) </> "purescript-" ++ VERSION_purescript- defaultPatterns :: [G.Pattern] defaultPatterns = map G.compile      [ "src/**/*.purs"     , "bower_components/purescript-*/src/**/*.purs"-    , "bower_components/purescript-*/src/**/*.purs.hs"     ]  data PureScriptConfig = PureScriptConfig     { libraryPatterns   :: [G.Pattern]     , libraryBaseDir    :: FilePath-    , preludePath       :: FilePath     , development       :: Bool     , initialCompiles   :: [FilePath]+    , pureScriptPrefix  :: [String]     , pureScriptOptions :: P.Options P.Compile     } @@ -59,11 +50,11 @@     def = PureScriptConfig          defaultPatterns         "."-        defaultPreludePath         False         []+        ["Generated by apiary-purescript. purescript version: " ++ "0.6.3"] -- TODO         P.defaultCompileOptions-        { P.optionsMain             = Just "Main" }+        { P.optionsMain  = Just "Main" }  data PureScript = PureScript     { pscConfig :: PureScriptConfig@@ -71,36 +62,21 @@     } instance Extension PureScript -makePureScript :: MonadIO m => PureScriptConfig -> m PureScript+makePureScript :: PureScriptConfig -> IO PureScript makePureScript conf = do-    ir <- liftIO $ mapM (\p -> (p,) <$> compile conf p) (initialCompiles conf)-    p  <- liftIO $ PureScript conf <$> newIORef (H.fromList ir)+    ir <- mapM (\p -> (p,) <$> compile conf p) (initialCompiles conf)+    p  <- PureScript conf <$> newIORef (H.fromList ir)     return p -defaultPreludePath :: FilePath-defaultPreludePath = purescriptDatadir </> "prelude/prelude.purs"--readPscInput :: FilePath -> IO [P.Module]-readPscInput p = do-    txt <- U.readFile p-    case P.runIndentParser p P.parseModules txt of-        Left e  -> throwIO $ ParseError e-        Right r -> return r--pscModules :: PureScriptConfig -> IO [P.Module]-pscModules conf = do-    mods <- liftIO $ do-        concat . fst <$> G.globDir (libraryPatterns conf) (libraryBaseDir conf)-    let prel = preludePath conf-    concat `fmap` mapM readPscInput (prel : mods)- compile :: PureScriptConfig -> FilePath -> IO String compile opt p = do-    mods <- pscModules opt-    mn   <- readPscInput p-    case P.compile (pureScriptOptions opt) (mn ++ mods) [] of-        Left l           -> throwIO (CompileError l)-        Right (js, _, _) -> return js+    mods <- G.globDir (libraryPatterns opt) (libraryBaseDir opt)+        >>= mapM (\f -> (f,) <$> U.readFile f) . (p:) . concat . fst+    case P.parseModulesFromFiles id $ ("prelude", P.prelude) : mods of+        Left l   -> throwIO (ParseError l)+        Right ms -> case P.compile (pureScriptOptions opt) (map snd ms) (pureScriptPrefix opt) of+            Left l         -> throwIO (CompileError l)+            Right (js,_,_) -> return js  pureScript :: MonadIO m => PureScript -> FilePath -> ActionT exts prms m () pureScript env p = do