@@ -125,9 +125,6 @@ module Option
125125import Prelude
126126import Prim hiding (Record )
127127import Control.Monad.Except as Control.Monad.Except
128- import Control.Monad.Reader.Trans as Control.Monad.Reader.Trans
129- import Control.Monad.Writer as Control.Monad.Writer
130- import Control.Monad.Writer.Class as Control.Monad.Writer.Class
131128import Data.Argonaut.Core as Data.Argonaut.Core
132129import Data.Argonaut.Decode.Class as Data.Argonaut.Decode.Class
133130import Data.Argonaut.Decode.Error as Data.Argonaut.Decode.Error
@@ -137,9 +134,9 @@ import Data.Codec.Argonaut as Data.Codec.Argonaut
137134import Data.Codec.Argonaut.Compat as Data.Codec.Argonaut.Compat
138135import Data.Either as Data.Either
139136import Data.Identity as Data.Identity
137+ import Data.List ((:))
140138import Data.List as Data.List
141139import Data.Maybe as Data.Maybe
142- import Data.Profunctor.Star as Data.Profunctor.Star
143140import Data.Show as Data.Show
144141import Data.Symbol as Data.Symbol
145142import Data.Tuple as Data.Tuple
@@ -1420,9 +1417,7 @@ instance jsonCodecRecordRequiredOptional ::
14201417 where
14211418 codec :: Data.Codec.Argonaut.JPropCodec (Record required optional )
14221419 codec =
1423- Data.Codec.GCodec
1424- (Control.Monad.Reader.Trans.ReaderT decode)
1425- (Data.Profunctor.Star.Star encode)
1420+ Data.Codec .codec decode encode
14261421
14271422 decode ::
14281423 Foreign.Object.Object Data.Argonaut.Core.Json ->
@@ -1441,13 +1436,9 @@ instance jsonCodecRecordRequiredOptional ::
14411436
14421437 encode ::
14431438 Record required optional ->
1444- Control.Monad.Writer.Writer
1445- (Data.List.List (Data.Tuple.Tuple String Data.Argonaut.Core.Json ))
1446- (Record required optional )
1447- encode record = do
1448- Control.Monad.Writer.Class .tell (Data.Codec .encode requiredCodec (required record))
1449- Control.Monad.Writer.Class .tell (Data.Codec .encode optionalCodec (optional record))
1450- pure record
1439+ (Data.List.List (Data.Tuple.Tuple String Data.Argonaut.Core.Json ))
1440+ encode record =
1441+ Data.List .concat (Data.Codec .encode requiredCodec (required record) : (Data.Codec .encode optionalCodec (optional record)) : Data.List.Nil )
14511442
14521443 optionalCodec :: Data.Codec.Argonaut.JPropCodec (Option optional )
14531444 optionalCodec = jsonCodecOption optionalProxy record'
@@ -1479,10 +1470,10 @@ instance jsonCodecOptionNil :: JsonCodecOption Prim.RowList.Nil record option wh
14791470 Prim.Record record ->
14801471 Data.Codec.Argonaut.JPropCodec (Option option )
14811472 jsonCodecOption _ _ =
1482- Data.Codec .mapCodec
1483- (\_ -> Data.Either.Right empty)
1484- (\_ -> {})
1485- Data.Codec.Argonaut .record
1473+ Data.Codec .codec
1474+ (( \_ -> Data.Either.Right empty) <=< Data.Codec.Argonaut .decode Data.Codec.Argonaut .record )
1475+ (Data.Codec.Argonaut .encode Data.Codec.Argonaut .record <<< \_ -> {})
1476+
14861477else instance jsonCodecOptionCons ::
14871478 ( Data.Symbol.IsSymbol label
14881479 , JsonCodecOption list record option'
@@ -1497,9 +1488,7 @@ else instance jsonCodecOptionCons ::
14971488 Prim.Record record ->
14981489 Data.Codec.Argonaut.JPropCodec (Option option )
14991490 jsonCodecOption _ record =
1500- Data.Codec.GCodec
1501- (Control.Monad.Reader.Trans.ReaderT decode)
1502- (Data.Profunctor.Star.Star encode)
1491+ Data.Codec .codec decode encode
15031492 where
15041493 codec :: Data.Codec.Argonaut.JsonCodec value
15051494 codec = Record .get label record
@@ -1519,19 +1508,18 @@ else instance jsonCodecOptionCons ::
15191508
15201509 encode ::
15211510 Option option ->
1522- Control.Monad.Writer.Writer (Data.List.List (Data.Tuple.Tuple String Data.Argonaut.Core.Json )) (Option option )
1523- encode option = do
1524- case get label option of
1525- Data.Maybe.Just value ->
1526- Control.Monad.Writer.Class .tell
1527- ( Data.List.Cons
1528- (Data.Tuple.Tuple key (Data.Codec.Argonaut .encode codec value))
1529- Data.List.Nil
1530- )
1531- Data.Maybe.Nothing -> pure unit
1532- Control.Monad.Writer.Class .tell
1533- (Data.Codec.Argonaut .encode option' (delete label option))
1534- pure option
1511+ (Data.List.List (Data.Tuple.Tuple String Data.Argonaut.Core.Json ))
1512+ encode option =
1513+ let a = case get label option of
1514+ Data.Maybe.Just value ->
1515+ ( Data.List.Cons
1516+ (Data.Tuple.Tuple key (Data.Codec.Argonaut .encode codec value))
1517+ Data.List.Nil
1518+ )
1519+ Data.Maybe.Nothing -> Data.List.Nil
1520+ in
1521+ Data.List .concat (a : (Data.Codec.Argonaut .encode option' (delete label option)) : Data.List.Nil )
1522+ -- pure option
15351523
15361524 key :: String
15371525 key = Data.Symbol .reflectSymbol label
@@ -1563,10 +1551,10 @@ instance jsonCodecRequiredNil :: JsonCodecRequired Prim.RowList.Nil record () wh
15631551 Prim.Record record ->
15641552 Data.Codec.Argonaut.JPropCodec (Prim.Record ())
15651553 jsonCodecRequired _ _ =
1566- Data.Codec .mapCodec
1567- (\_ -> Data.Either.Right {} )
1568- (\_ -> {} )
1569- Data.Codec.Argonaut .record
1554+ Data.Codec .codec
1555+ (Data.Codec.Argonaut .decode Data.Codec.Argonaut .record )
1556+ (Data.Codec.Argonaut .encode Data.Codec.Argonaut .record )
1557+
15701558else instance jsonCodecRequiredCons ::
15711559 ( Data.Symbol.IsSymbol label
15721560 , JsonCodecRequired list record required'
@@ -1581,9 +1569,7 @@ else instance jsonCodecRequiredCons ::
15811569 Prim.Record record ->
15821570 Data.Codec.Argonaut.JPropCodec (Prim.Record required )
15831571 jsonCodecRequired _ record =
1584- Data.Codec.GCodec
1585- (Control.Monad.Reader.Trans.ReaderT decode)
1586- (Data.Profunctor.Star.Star encode)
1572+ Data.Codec .codec decode encode
15871573 where
15881574 codec :: Data.Codec.Argonaut.JsonCodec value
15891575 codec = Record .get label record
@@ -1600,17 +1586,12 @@ else instance jsonCodecRequiredCons ::
16001586 Data.Maybe.Nothing -> Data.Either.Left (Data.Codec.Argonaut.AtKey key Data.Codec.Argonaut.MissingValue )
16011587
16021588 encode ::
1603- Prim.Record required ->
1604- Control.Monad.Writer.Writer (Data.List.List (Data.Tuple.Tuple String Data.Argonaut.Core.Json )) (Prim.Record required )
1589+ Prim.Record required -> Data.List.List (Data.Tuple.Tuple String Data.Argonaut.Core.Json )
16051590 encode required' = do
1606- Control.Monad.Writer.Class .tell
1607- ( Data.List.Cons
1591+ Data.List .concat ((Data.List.Cons
16081592 (Data.Tuple.Tuple key (Data.Codec.Argonaut .encode codec (Record .get label required')))
16091593 Data.List.Nil
1610- )
1611- Control.Monad.Writer.Class .tell
1612- (Data.Codec.Argonaut .encode requiredCodec (Record .delete label required'))
1613- pure required'
1594+ ) : (Data.Codec.Argonaut .encode requiredCodec (Record .delete label required')): Data.List.Nil )
16141595
16151596 key :: String
16161597 key = Data.Symbol .reflectSymbol label
@@ -2779,7 +2760,7 @@ jsonCodec ::
27792760 String ->
27802761 Prim.Record record ->
27812762 Data.Codec.Argonaut.JsonCodec (Option optional )
2782- jsonCodec name record' = Data.Codec .basicCodec decode encode
2763+ jsonCodec name record' = Data.Codec .codec' decode encode
27832764 where
27842765 codec :: Data.Codec.Argonaut.JsonCodec (Record () optional )
27852766 codec = jsonCodec' name record'
0 commit comments