@@ -125,9 +125,6 @@ module Option
125
125
import Prelude
126
126
import Prim hiding (Record )
127
127
import 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
131
128
import Data.Argonaut.Core as Data.Argonaut.Core
132
129
import Data.Argonaut.Decode.Class as Data.Argonaut.Decode.Class
133
130
import Data.Argonaut.Decode.Error as Data.Argonaut.Decode.Error
@@ -137,9 +134,9 @@ import Data.Codec.Argonaut as Data.Codec.Argonaut
137
134
import Data.Codec.Argonaut.Compat as Data.Codec.Argonaut.Compat
138
135
import Data.Either as Data.Either
139
136
import Data.Identity as Data.Identity
137
+ import Data.List ((:))
140
138
import Data.List as Data.List
141
139
import Data.Maybe as Data.Maybe
142
- import Data.Profunctor.Star as Data.Profunctor.Star
143
140
import Data.Show as Data.Show
144
141
import Data.Symbol as Data.Symbol
145
142
import Data.Tuple as Data.Tuple
@@ -1420,9 +1417,7 @@ instance jsonCodecRecordRequiredOptional ::
1420
1417
where
1421
1418
codec :: Data.Codec.Argonaut.JPropCodec (Record required optional )
1422
1419
codec =
1423
- Data.Codec.GCodec
1424
- (Control.Monad.Reader.Trans.ReaderT decode)
1425
- (Data.Profunctor.Star.Star encode)
1420
+ Data.Codec .codec decode encode
1426
1421
1427
1422
decode ::
1428
1423
Foreign.Object.Object Data.Argonaut.Core.Json ->
@@ -1441,13 +1436,9 @@ instance jsonCodecRecordRequiredOptional ::
1441
1436
1442
1437
encode ::
1443
1438
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 )
1451
1442
1452
1443
optionalCodec :: Data.Codec.Argonaut.JPropCodec (Option optional )
1453
1444
optionalCodec = jsonCodecOption optionalProxy record'
@@ -1479,10 +1470,10 @@ instance jsonCodecOptionNil :: JsonCodecOption Prim.RowList.Nil record option wh
1479
1470
Prim.Record record ->
1480
1471
Data.Codec.Argonaut.JPropCodec (Option option )
1481
1472
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
+
1486
1477
else instance jsonCodecOptionCons ::
1487
1478
( Data.Symbol.IsSymbol label
1488
1479
, JsonCodecOption list record option'
@@ -1497,9 +1488,7 @@ else instance jsonCodecOptionCons ::
1497
1488
Prim.Record record ->
1498
1489
Data.Codec.Argonaut.JPropCodec (Option option )
1499
1490
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
1503
1492
where
1504
1493
codec :: Data.Codec.Argonaut.JsonCodec value
1505
1494
codec = Record .get label record
@@ -1519,19 +1508,18 @@ else instance jsonCodecOptionCons ::
1519
1508
1520
1509
encode ::
1521
1510
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
1535
1523
1536
1524
key :: String
1537
1525
key = Data.Symbol .reflectSymbol label
@@ -1563,10 +1551,10 @@ instance jsonCodecRequiredNil :: JsonCodecRequired Prim.RowList.Nil record () wh
1563
1551
Prim.Record record ->
1564
1552
Data.Codec.Argonaut.JPropCodec (Prim.Record ())
1565
1553
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
+
1570
1558
else instance jsonCodecRequiredCons ::
1571
1559
( Data.Symbol.IsSymbol label
1572
1560
, JsonCodecRequired list record required'
@@ -1581,9 +1569,7 @@ else instance jsonCodecRequiredCons ::
1581
1569
Prim.Record record ->
1582
1570
Data.Codec.Argonaut.JPropCodec (Prim.Record required )
1583
1571
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
1587
1573
where
1588
1574
codec :: Data.Codec.Argonaut.JsonCodec value
1589
1575
codec = Record .get label record
@@ -1600,17 +1586,12 @@ else instance jsonCodecRequiredCons ::
1600
1586
Data.Maybe.Nothing -> Data.Either.Left (Data.Codec.Argonaut.AtKey key Data.Codec.Argonaut.MissingValue )
1601
1587
1602
1588
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 )
1605
1590
encode required' = do
1606
- Control.Monad.Writer.Class .tell
1607
- ( Data.List.Cons
1591
+ Data.List .concat ((Data.List.Cons
1608
1592
(Data.Tuple.Tuple key (Data.Codec.Argonaut .encode codec (Record .get label required')))
1609
1593
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 )
1614
1595
1615
1596
key :: String
1616
1597
key = Data.Symbol .reflectSymbol label
@@ -2779,7 +2760,7 @@ jsonCodec ::
2779
2760
String ->
2780
2761
Prim.Record record ->
2781
2762
Data.Codec.Argonaut.JsonCodec (Option optional )
2782
- jsonCodec name record' = Data.Codec .basicCodec decode encode
2763
+ jsonCodec name record' = Data.Codec .codec' decode encode
2783
2764
where
2784
2765
codec :: Data.Codec.Argonaut.JsonCodec (Record () optional )
2785
2766
codec = jsonCodec' name record'
0 commit comments