module Language.PureScript.Bridge.Primitives where
import Language.PureScript.Bridge.TypeInfo
import Language.PureScript.Bridge.PSTypes
boolBridge :: TypeBridge
boolBridge = mkBridgeTo (eqTypeName "Bool") psBool
eitherBridge :: TypeBridge
eitherBridge = mkBridgeTo1 (eqTypeName "Either") psEither
intBridge :: TypeBridge
intBridge = mkBridgeTo (eqTypeName "Int") psInt
listBridge :: TypeBridge
listBridge = mkBridgeTo1 (eqTypeName "[]") psArray
maybeBridge :: TypeBridge
maybeBridge = mkBridgeTo1 (eqTypeName "Maybe") psMaybe
stringBridge :: TypeBridge
stringBridge = mkBridgeTo isStringLike psString
where
isStringLike t = isText t || isString t
isText t = typeName t == "Text"
isString t = typeName t == "[]" && all ((==) "Char" . typeName) (typeParameters t)
unitBridge :: TypeBridge
unitBridge = mkBridgeTo (eqTypeName "()") psUnit