22
33module Data.Foreign.Class
44 ( class IsForeign
5- , class AsForeign
6- , (.=)
75 , read
86 , readJSON
97 , readWith
108 , readProp
9+ , class AsForeign
1110 , write
12- , writeProp
11+ , writeProp , (.=)
1312 ) where
1413
1514import Prelude
@@ -51,7 +50,7 @@ instance numberIsForeign :: IsForeign Number where
5150instance intIsForeign :: IsForeign Int where
5251 read = readInt
5352
54- instance arrayIsForeign :: ( IsForeign a ) => IsForeign (Array a ) where
53+ instance arrayIsForeign :: IsForeign a => IsForeign (Array a ) where
5554 read value = readArray value >>= readElements
5655 where
5756 readElements :: Array Foreign -> F (Array a )
@@ -60,21 +59,21 @@ instance arrayIsForeign :: (IsForeign a) => IsForeign (Array a) where
6059 readElement :: Int -> Foreign -> F a
6160 readElement i value = readWith (ErrorAtIndex i) value
6261
63- instance nullIsForeign :: ( IsForeign a ) => IsForeign (Null a ) where
62+ instance nullIsForeign :: IsForeign a => IsForeign (Null a ) where
6463 read = readNull read
6564
66- instance undefinedIsForeign :: ( IsForeign a ) => IsForeign (Undefined a ) where
65+ instance undefinedIsForeign :: IsForeign a => IsForeign (Undefined a ) where
6766 read = readUndefined read
6867
69- instance nullOrUndefinedIsForeign :: ( IsForeign a ) => IsForeign (NullOrUndefined a ) where
68+ instance nullOrUndefinedIsForeign :: IsForeign a => IsForeign (NullOrUndefined a ) where
7069 read = readNullOrUndefined read
7170
7271-- | Attempt to read a data structure from a JSON string
73- readJSON :: forall a . ( IsForeign a ) => String -> F a
72+ readJSON :: forall a . IsForeign a => String -> F a
7473readJSON json = parseJSON json >>= read
7574
7675-- | Attempt to read a foreign value, handling errors using the specified function
77- readWith :: forall a e . ( IsForeign a ) => (ForeignError -> e ) -> Foreign -> Either e a
76+ readWith :: forall a e . IsForeign a => (ForeignError -> e ) -> Foreign -> Either e a
7877readWith f value = either (Left <<< f) Right (read value)
7978
8079-- | Attempt to read a property of a foreign value at the specified index
@@ -105,19 +104,19 @@ instance numberAsForeign :: AsForeign Number where
105104instance intAsForeign :: AsForeign Int where
106105 write = toForeign
107106
108- instance arrayAsForeign :: ( AsForeign a ) => AsForeign (Array a ) where
107+ instance arrayAsForeign :: AsForeign a => AsForeign (Array a ) where
109108 write = toForeign <<< map write
110109
111- instance nullAsForeign :: ( AsForeign a ) => AsForeign (Null a ) where
110+ instance nullAsForeign :: AsForeign a => AsForeign (Null a ) where
112111 write (Null a) = maybe writeNull write a
113112
114- instance undefinedAsForeign :: ( AsForeign a ) => AsForeign (Undefined a ) where
113+ instance undefinedAsForeign :: AsForeign a => AsForeign (Undefined a ) where
115114 write (Undefined a) = maybe writeUndefined write a
116115
117- instance nullOrUndefinedAsForeign :: ( AsForeign a ) => AsForeign (NullOrUndefined a ) where
116+ instance nullOrUndefinedAsForeign :: AsForeign a => AsForeign (NullOrUndefined a ) where
118117 write (NullOrUndefined a) = write (Null a)
119118
120119infixl 8 writeProp as .=
121120
122- writeProp :: forall a . ( AsForeign a ) => String -> a -> Prop
121+ writeProp :: forall a . AsForeign a => String -> a -> Prop
123122writeProp k v = Prop { key: k, value: write v }
0 commit comments