{-# 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 :: BridgePart
boolBridge = forall (lang :: Language). Lens' (TypeInfo lang) Text
typeName forall a. Eq a => Getter HaskellType a -> a -> BridgeBuilder ()
^== Text
"Bool" forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> forall (m :: * -> *) a. Monad m => a -> m a
return PSType
psBool
eitherBridge :: BridgePart
eitherBridge :: BridgePart
eitherBridge = forall (lang :: Language). Lens' (TypeInfo lang) Text
typeName forall a. Eq a => Getter HaskellType a -> a -> BridgeBuilder ()
^== Text
"Either" forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> forall (m :: * -> *). MonadReader BridgeData m => m PSType
psEither
strMapBridge :: BridgePart
strMapBridge :: BridgePart
strMapBridge = forall (lang :: Language). Lens' (TypeInfo lang) Text
typeName forall a. Eq a => Getter HaskellType a -> a -> BridgeBuilder ()
^== Text
"Map" forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> forall (m :: * -> *). MonadReader BridgeData m => m PSType
psObject
dummyBridge :: MonadReader BridgeData m => m PSType
dummyBridge :: forall (m :: * -> *). MonadReader BridgeData m => m PSType
dummyBridge = forall (m :: * -> *). MonadReader BridgeData m => m PSType
clearPackageFixUp
intBridge :: BridgePart
intBridge :: BridgePart
intBridge = forall (lang :: Language). Lens' (TypeInfo lang) Text
typeName forall a. Eq a => Getter HaskellType a -> a -> BridgeBuilder ()
^== Text
"Int" forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> forall (m :: * -> *) a. Monad m => a -> m a
return PSType
psInt
doubleBridge :: BridgePart
doubleBridge :: BridgePart
doubleBridge = forall (lang :: Language). Lens' (TypeInfo lang) Text
typeName forall a. Eq a => Getter HaskellType a -> a -> BridgeBuilder ()
^== Text
"Double" forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> forall (m :: * -> *) a. Monad m => a -> m a
return PSType
psNumber
listBridge :: BridgePart
listBridge :: BridgePart
listBridge = forall (lang :: Language). Lens' (TypeInfo lang) Text
typeName forall a. Eq a => Getter HaskellType a -> a -> BridgeBuilder ()
^== Text
"[]" forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> forall (m :: * -> *). MonadReader BridgeData m => m PSType
psArray
maybeBridge :: BridgePart
maybeBridge :: BridgePart
maybeBridge = forall (lang :: Language). Lens' (TypeInfo lang) Text
typeName forall a. Eq a => Getter HaskellType a -> a -> BridgeBuilder ()
^== Text
"Maybe" forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> forall (m :: * -> *). MonadReader BridgeData m => m PSType
psMaybe
stringBridge :: BridgePart
stringBridge :: BridgePart
stringBridge = forall t. HasHaskType t => Lens' t HaskellType
haskType forall a. Eq a => Getter HaskellType a -> a -> BridgeBuilder ()
^== forall t. Typeable t => Proxy t -> HaskellType
mkTypeInfo (forall {k} (t :: k). Proxy t
Proxy :: Proxy String ) forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> forall (m :: * -> *) a. Monad m => a -> m a
return PSType
psString
textBridge :: BridgePart
textBridge :: BridgePart
textBridge = do
forall (lang :: Language). Lens' (TypeInfo lang) Text
typeName forall a. Eq a => Getter HaskellType a -> a -> BridgeBuilder ()
^== Text
"Text"
forall (lang :: Language). Lens' (TypeInfo lang) Text
typeModule forall a. Eq a => Getter HaskellType a -> a -> BridgeBuilder ()
^== Text
"Data.Text.Internal" forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|> forall (lang :: Language). Lens' (TypeInfo lang) Text
typeModule forall a. Eq a => Getter HaskellType a -> a -> BridgeBuilder ()
^== Text
"Data.Text.Internal.Lazy"
forall (m :: * -> *) a. Monad m => a -> m a
return PSType
psString
unitBridge :: BridgePart
unitBridge :: BridgePart
unitBridge = forall (lang :: Language). Lens' (TypeInfo lang) Text
typeName forall a. Eq a => Getter HaskellType a -> a -> BridgeBuilder ()
^== Text
"()" forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> forall (m :: * -> *) a. Monad m => a -> m a
return PSType
psUnit
noContentBridge :: BridgePart
noContentBridge :: BridgePart
noContentBridge = forall (lang :: Language). Lens' (TypeInfo lang) Text
typeName forall a. Eq a => Getter HaskellType a -> a -> BridgeBuilder ()
^== Text
"NoContent" forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> forall (m :: * -> *) a. Monad m => a -> m a
return PSType
psUnit
wordBridge :: BridgePart
wordBridge :: BridgePart
wordBridge = forall (lang :: Language). Lens' (TypeInfo lang) Text
typeName forall a. Eq a => Getter HaskellType a -> a -> BridgeBuilder ()
^== Text
"Word" forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> forall (m :: * -> *) a. Monad m => a -> m a
return PSType
psWord
word8Bridge :: BridgePart
word8Bridge :: BridgePart
word8Bridge = forall (lang :: Language). Lens' (TypeInfo lang) Text
typeName forall a. Eq a => Getter HaskellType a -> a -> BridgeBuilder ()
^== Text
"Word8" forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> forall (m :: * -> *) a. Monad m => a -> m a
return PSType
psWord8
word16Bridge :: BridgePart
word16Bridge :: BridgePart
word16Bridge = forall (lang :: Language). Lens' (TypeInfo lang) Text
typeName forall a. Eq a => Getter HaskellType a -> a -> BridgeBuilder ()
^== Text
"Word16" forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> forall (m :: * -> *) a. Monad m => a -> m a
return PSType
psWord16
word32Bridge :: BridgePart
word32Bridge :: BridgePart
word32Bridge = forall (lang :: Language). Lens' (TypeInfo lang) Text
typeName forall a. Eq a => Getter HaskellType a -> a -> BridgeBuilder ()
^== Text
"Word32" forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> forall (m :: * -> *) a. Monad m => a -> m a
return PSType
psWord32
word64Bridge :: BridgePart
word64Bridge :: BridgePart
word64Bridge = forall (lang :: Language). Lens' (TypeInfo lang) Text
typeName forall a. Eq a => Getter HaskellType a -> a -> BridgeBuilder ()
^== Text
"Word64" forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> forall (m :: * -> *) a. Monad m => a -> m a
return PSType
psWord64