Foreign.Generic 
- Package
- purescript-open-foreign-generic
- Repository
- purescript-open-community/purescript-open-foreign-generic
#genericDecode Source
genericDecode :: forall a rep. Generic a rep => GenericDecode rep => Options -> Foreign -> F aRead a value which has a Generic type.
#genericEncode Source
genericEncode :: forall a rep. Generic a rep => GenericEncode rep => Options -> a -> ForeignGenerate a Foreign value compatible with the genericDecode function.
#decodeJSON Source
decodeJSON :: forall a. Decode a => String -> F aDecode a JSON string using a Decode instance.
#encodeJSON Source
encodeJSON :: forall a. Encode a => a -> StringEncode a JSON string using an Encode instance.
#genericDecodeJSON Source
genericDecodeJSON :: forall a rep. Generic a rep => GenericDecode rep => Options -> String -> F aRead a value which has a Generic type from a JSON String
#genericEncodeJSON Source
genericEncodeJSON :: forall a rep. Generic a rep => GenericEncode rep => Options -> a -> StringWrite a value which has a Generic type as a JSON String
Re-exports from Foreign
#ForeignError Source
data ForeignErrorA type for foreign type errors
Constructors
- ForeignError String
- TypeMismatch String String
- ErrorAtIndex Int ForeignError
- ErrorAtProperty String ForeignError
Instances
#Foreign Source
data ForeignA type for foreign data.
Foreign data is data from any external unknown or unreliable source, for which it cannot be guaranteed that the runtime representation conforms to that of any particular type.
Suitable applications of Foreign are
- To represent responses from web services
- To integrate with external JavaScript libraries.
#F Source
type F = Except MultipleErrorsWhile this alias is not deprecated, it is recommended
that one use Except (NonEmptyList ForeignError) directly
for all future usages rather than this type alias.
An error monad, used in this library to encode possible failures when dealing with foreign data.
The Alt instance for Except allows us to accumulate errors,
unlike Either, which preserves only the last error.
Re-exports from Foreign.Generic.Class  
#SumEncoding Source
data SumEncodingThe encoding of sum types for your type.
TaggedObjects will be encoded in the form { [tagFieldName]: "ConstructorTag", [contentsFieldName]: "Contents"}.
constructorTagTransform can be provided to transform the constructor tag to a form you use, e.g. toLower/toUpper.
Constructors
- TaggedObject { constructorTagTransform :: String -> String, contentsFieldName :: String, tagFieldName :: String }
#Options Source
type Options = { fieldTransform :: String -> String, sumEncoding :: SumEncoding, unwrapSingleArguments :: Boolean, unwrapSingleConstructors :: Boolean }Encoding/Decoding options which can be used to customize
Decode and Encode instances which are derived via
Generic (see genericEncode and genericDecode).
#Decode Source
class Decode a  whereThe Decode class is used to generate decoding functions
of the form Foreign -> F a using generics-rep deriving.
First, derive Generic for your data:
import Data.Generic.Rep
data MyType = MyType ...
derive instance genericMyType :: Generic MyType _
You can then use the genericDecode and genericDecodeJSON functions
to decode your foreign/JSON-encoded data.
Members
Instances
- Decode Void
- Decode Unit
- Decode Foreign
- Decode String
- Decode Char
- Decode Boolean
- Decode Number
- Decode Int
- (Decode a, Decode b) => Decode (Either a b)
- (Decode a, Decode b) => Decode (Tuple a b)
- (Decode a) => Decode (Identity a)
- (Decode a) => Decode (Array a)
- (Decode a, Ord a) => Decode (Set a)
- (Decode a) => Decode (Maybe a)
- (Decode v) => Decode (Object v)
- (RowToList r rl, DecodeRecord r rl) => Decode (Record r)
- (Decode a) => Decode (Poly a)
#Encode Source
class Encode a  whereThe Encode class is used to generate encoding functions
of the form a -> Foreign using generics-rep deriving.
First, derive Generic for your data:
import Data.Generic.Rep
data MyType = MyType ...
derive instance genericMyType :: Generic MyType _
You can then use the genericEncode and genericEncodeJSON functions
to encode your data as JSON.
Members
Instances
- Encode Void
- Encode Unit
- Encode Foreign
- Encode String
- Encode Char
- Encode Boolean
- Encode Number
- Encode Int
- (Encode a) => Encode (Identity a)
- (Encode a) => Encode (Array a)
- (Encode a, Ord a) => Encode (Set a)
- (Encode a) => Encode (Maybe a)
- (Encode a, Encode b) => Encode (Either a b)
- (Encode a, Encode b) => Encode (Tuple a b)
- (Encode v) => Encode (Object v)
- (RowToList r rl, EncodeRecord r rl) => Encode (Record r)
- (Encode a) => Encode (Poly a)
#GenericDecode Source
class GenericDecode a Instances
- GenericDecode NoConstructors
- (IsSymbol name, GenericDecodeArgs rep, GenericCountArgs rep) => GenericDecode (Constructor name rep)
- (GenericDecode a, GenericDecode b) => GenericDecode (Sum a b)
#GenericEncode Source
class GenericEncode a Instances
- GenericEncode NoConstructors
- (IsSymbol name, GenericEncodeArgs rep) => GenericEncode (Constructor name rep)
- (GenericEncode a, GenericEncode b) => GenericEncode (Sum a b)
#defaultOptions Source
defaultOptions :: OptionsDefault decoding/encoding options:
- Represent sum types as records with tagandcontentsfields
- Unwrap single arguments
- Don't unwrap single constructors
- Use the constructor names as-is
- Use the field names as-is