module Language.PureScript.Bridge.PSTypes where
import Data.Monoid
import qualified Data.Text as T
import Language.PureScript.Bridge.TypeInfo
psArray :: TypeInfo -> TypeInfo
psArray t = t {
typePackage = "purescript-prim"
, typeModule = "Prim"
, typeName = "Array"
}
psBool :: TypeInfo
psBool = TypeInfo {
typePackage = "purescript-prim"
, typeModule = "Prim"
, typeName = "Boolean"
, typeParameters = []
}
psEither :: TypeInfo -> TypeInfo
psEither t = t {
typePackage = "purescript-either"
, typeModule = "Data.Either"
, typeName = "Either"
}
psInt :: TypeInfo
psInt = TypeInfo {
typePackage = "purescript-prim"
, typeModule = "Prim"
, typeName = "Int"
, typeParameters = []
}
psMaybe :: TypeInfo -> TypeInfo
psMaybe t = t {
typePackage = "purescript-maybe"
, typeModule = "Data.Maybe"
, typeName = "Maybe"
}
psString :: TypeInfo
psString = TypeInfo {
typePackage = "purescript-prim"
, typeModule = "Prim"
, typeName = "String"
, typeParameters = []
}
psTuple :: TypeInfo -> TypeInfo
psTuple t = t {
typePackage = "purescript-tuples"
, typeModule = if size == 2 then "Data.Tuple" else "Data.Tuple.Nested"
, typeName = "Tuple" <> if size == 2 then "" else T.pack (show size)
}
where
size = length (typeParameters t)
psUnit :: TypeInfo
psUnit = TypeInfo {
typePackage = "purescript-prelude"
, typeModule = "Prelude"
, typeName = "Unit"
, typeParameters = []
}