purescript-bridge 0.3.0.3 → 0.3.0.4
raw patch · 3 files changed
+18/−2 lines, 3 files
Files
- purescript-bridge.cabal +1/−1
- src/Language/PureScript/Bridge.hs +6/−0
- src/Language/PureScript/Bridge/Printer.hs +11/−1
purescript-bridge.cabal view
@@ -10,7 +10,7 @@ -- PVP summary: +-+------- breaking API changes -- | | +----- non-breaking API additions -- | | | +--- code changes with no API change-version: 0.3.0.3+version: 0.3.0.4 -- A short (one-line) description of the package. synopsis: Generate PureScript data types from Haskell data types
src/Language/PureScript/Bridge.hs view
@@ -8,7 +8,9 @@ import qualified Data.Text as T+import qualified Data.Text.IO as T + import Language.PureScript.Bridge.SumType as Bridge import Language.PureScript.Bridge.TypeInfo as Bridge import Language.PureScript.Bridge.Tuple as Bridge@@ -55,6 +57,10 @@ let bridged = map (bridgeSumType br) sts let modules = M.elems $ sumTypesToModules M.empty bridged mapM_ (printModule root) modules+ T.putStrLn "Successfully created your PureScript modules.\n"+ T.putStrLn "Make sure you have the following PureScript packages installed:\n"+ let packages = sumTypesToNeededPackages bridged+ mapM_ (T.putStrLn . mappend " - ") packages -- | Translate leaf types in a sum type to match PureScript types. bridgeSumType :: TypeBridge -> SumType -> SumType
src/Language/PureScript/Bridge/Printer.hs view
@@ -41,6 +41,16 @@ mPath = root </> mFile mDir = takeDirectory mPath +sumTypesToNeededPackages :: [SumType] -> Set Text+sumTypesToNeededPackages = S.unions . map sumTypeToNeededPackages++sumTypeToNeededPackages :: SumType -> Set Text+sumTypeToNeededPackages st = let+ types = getUsedTypes st+ packages = filter (not . T.null) . map typePackage $ types+ in+ S.fromList packages+ moduleToText :: PSModule -> Text moduleToText m = T.unlines $ "module " <> psModuleName m <> " where\n"@@ -85,7 +95,7 @@ sumTypesToModules = foldr sumTypeToModule sumTypeToModule :: SumType -> Modules -> Modules-sumTypeToModule st@(SumType t _) = M.alter (Just. updateModule) (typeModule t)+sumTypeToModule st@(SumType t _) = M.alter (Just . updateModule) (typeModule t) where updateModule Nothing = PSModule { psModuleName = typeModule t