purescript-bridge-0.15.0.0: src/Language/PureScript/Bridge/Primitives.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE DataKinds #-}
module Language.PureScript.Bridge.Primitives where
import Data.Proxy
import Language.PureScript.Bridge.Builder
import Language.PureScript.Bridge.PSTypes
import Language.PureScript.Bridge.TypeInfo
import Control.Monad.Reader.Class
boolBridge :: BridgePart
boolBridge = typeName ^== "Bool" >> return psBool
eitherBridge :: BridgePart
eitherBridge = typeName ^== "Either" >> psEither
strMapBridge :: BridgePart
strMapBridge = typeName ^== "Map" >> psObject
-- | Dummy bridge, translates every type with 'clearPackageFixUp'
dummyBridge :: MonadReader BridgeData m => m PSType
dummyBridge = clearPackageFixUp
intBridge :: BridgePart
intBridge = typeName ^== "Int" >> return psInt
doubleBridge :: BridgePart
doubleBridge = typeName ^== "Double" >> return psNumber
listBridge :: BridgePart
listBridge = typeName ^== "[]" >> psArray
maybeBridge :: BridgePart
maybeBridge = typeName ^== "Maybe" >> psMaybe
stringBridge :: BridgePart
stringBridge = haskType ^== mkTypeInfo (Proxy :: Proxy String ) >> return psString
textBridge :: BridgePart
textBridge = do
typeName ^== "Text"
typeModule ^== "Data.Text.Internal" <|> typeModule ^== "Data.Text.Internal.Lazy"
return psString
unitBridge :: BridgePart
unitBridge = typeName ^== "()" >> return psUnit
noContentBridge :: BridgePart
noContentBridge = typeName ^== "NoContent" >> return psUnit
wordBridge :: BridgePart
wordBridge = typeName ^== "Word" >> return psWord
word8Bridge :: BridgePart
word8Bridge = typeName ^== "Word8" >> return psWord8
word16Bridge :: BridgePart
word16Bridge = typeName ^== "Word16" >> return psWord16
word32Bridge :: BridgePart
word32Bridge = typeName ^== "Word32" >> return psWord32
word64Bridge :: BridgePart
word64Bridge = typeName ^== "Word64" >> return psWord64