module Toml.Lens
( _Table
, _Array
, _Float
, _Integer
, _String
, _Bool
, _ZonedTime
, _LocalTime
, _Day
, _TimeOfDay
) where
import Data.Profunctor
import qualified Data.Time as Time
import Toml
prism
:: (Choice p, Applicative f)
=> (b -> t)
-> (s -> Either t a)
-> p a (f b)
-> p s (f t)
prism :: forall (p :: * -> * -> *) (f :: * -> *) b t s a.
(Choice p, Applicative f) =>
(b -> t) -> (s -> Either t a) -> p a (f b) -> p s (f t)
prism b -> t
bt s -> Either t a
seta = forall (p :: * -> * -> *) a b c d.
Profunctor p =>
(a -> b) -> (c -> d) -> p b c -> p a d
dimap s -> Either t a
seta (forall a c b. (a -> c) -> (b -> c) -> Either a b -> c
either forall (f :: * -> *) a. Applicative f => a -> f a
pure (forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap b -> t
bt)) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (p :: * -> * -> *) a b c.
Choice p =>
p a b -> p (Either c a) (Either c b)
right'
{-# INLINE prism #-}
_Table
:: (Choice p, Applicative f)
=> p Table (f Table)
-> p Value (f Value)
_Table :: forall (p :: * -> * -> *) (f :: * -> *).
(Choice p, Applicative f) =>
p Table (f Table) -> p Value (f Value)
_Table =
forall (p :: * -> * -> *) (f :: * -> *) b t s a.
(Choice p, Applicative f) =>
(b -> t) -> (s -> Either t a) -> p a (f b) -> p s (f t)
prism Table -> Value
Table forall a b. (a -> b) -> a -> b
$ \ Value
n -> case Value
n of
Table Table
v -> forall a b. b -> Either a b
Right Table
v
Value
_ -> forall a b. a -> Either a b
Left Value
n
{-# INLINE _Table #-}
_Array
:: (Choice p, Applicative f)
=> p [Value] (f [Value])
-> p Value (f Value)
_Array :: forall (p :: * -> * -> *) (f :: * -> *).
(Choice p, Applicative f) =>
p [Value] (f [Value]) -> p Value (f Value)
_Array =
forall (p :: * -> * -> *) (f :: * -> *) b t s a.
(Choice p, Applicative f) =>
(b -> t) -> (s -> Either t a) -> p a (f b) -> p s (f t)
prism [Value] -> Value
Array forall a b. (a -> b) -> a -> b
$ \ Value
n -> case Value
n of
Array [Value]
v -> forall a b. b -> Either a b
Right [Value]
v
Value
_ -> forall a b. a -> Either a b
Left Value
n
{-# INLINE _Array #-}
_Float
:: (Choice p, Applicative f)
=> p Double (f Double)
-> p Value (f Value)
_Float :: forall (p :: * -> * -> *) (f :: * -> *).
(Choice p, Applicative f) =>
p Double (f Double) -> p Value (f Value)
_Float =
forall (p :: * -> * -> *) (f :: * -> *) b t s a.
(Choice p, Applicative f) =>
(b -> t) -> (s -> Either t a) -> p a (f b) -> p s (f t)
prism Double -> Value
Float forall a b. (a -> b) -> a -> b
$ \ Value
n -> case Value
n of
Float Double
v -> forall a b. b -> Either a b
Right Double
v
Value
_ -> forall a b. a -> Either a b
Left Value
n
{-# INLINE _Float #-}
_Integer
:: (Choice p, Applicative f)
=> p Integer (f Integer)
-> p Value (f Value)
_Integer :: forall (p :: * -> * -> *) (f :: * -> *).
(Choice p, Applicative f) =>
p Integer (f Integer) -> p Value (f Value)
_Integer =
forall (p :: * -> * -> *) (f :: * -> *) b t s a.
(Choice p, Applicative f) =>
(b -> t) -> (s -> Either t a) -> p a (f b) -> p s (f t)
prism Integer -> Value
Integer forall a b. (a -> b) -> a -> b
$ \ Value
n -> case Value
n of
Integer Integer
v -> forall a b. b -> Either a b
Right Integer
v
Value
_ -> forall a b. a -> Either a b
Left Value
n
{-# INLINE _Integer #-}
_String
:: (Choice p, Applicative f)
=> p String (f String)
-> p Value (f Value)
_String :: forall (p :: * -> * -> *) (f :: * -> *).
(Choice p, Applicative f) =>
p String (f String) -> p Value (f Value)
_String =
forall (p :: * -> * -> *) (f :: * -> *) b t s a.
(Choice p, Applicative f) =>
(b -> t) -> (s -> Either t a) -> p a (f b) -> p s (f t)
prism String -> Value
String forall a b. (a -> b) -> a -> b
$ \ Value
n -> case Value
n of
String String
v -> forall a b. b -> Either a b
Right String
v
Value
_ -> forall a b. a -> Either a b
Left Value
n
{-# INLINE _String #-}
_Bool
:: (Choice p, Applicative f)
=> p Bool (f Bool)
-> p Value (f Value)
_Bool :: forall (p :: * -> * -> *) (f :: * -> *).
(Choice p, Applicative f) =>
p Bool (f Bool) -> p Value (f Value)
_Bool =
forall (p :: * -> * -> *) (f :: * -> *) b t s a.
(Choice p, Applicative f) =>
(b -> t) -> (s -> Either t a) -> p a (f b) -> p s (f t)
prism Bool -> Value
Bool forall a b. (a -> b) -> a -> b
$ \ Value
n -> case Value
n of
Bool Bool
v -> forall a b. b -> Either a b
Right Bool
v
Value
_ -> forall a b. a -> Either a b
Left Value
n
{-# INLINE _Bool #-}
_ZonedTime
:: (Choice p, Applicative f)
=> p Time.ZonedTime (f Time.ZonedTime)
-> p Value (f Value)
_ZonedTime :: forall (p :: * -> * -> *) (f :: * -> *).
(Choice p, Applicative f) =>
p ZonedTime (f ZonedTime) -> p Value (f Value)
_ZonedTime =
forall (p :: * -> * -> *) (f :: * -> *) b t s a.
(Choice p, Applicative f) =>
(b -> t) -> (s -> Either t a) -> p a (f b) -> p s (f t)
prism ZonedTime -> Value
ZonedTime forall a b. (a -> b) -> a -> b
$ \ Value
n -> case Value
n of
ZonedTime ZonedTime
v -> forall a b. b -> Either a b
Right ZonedTime
v
Value
_ -> forall a b. a -> Either a b
Left Value
n
{-# INLINE _ZonedTime #-}
_LocalTime
:: (Choice p, Applicative f)
=> p Time.LocalTime (f Time.LocalTime)
-> p Value (f Value)
_LocalTime :: forall (p :: * -> * -> *) (f :: * -> *).
(Choice p, Applicative f) =>
p LocalTime (f LocalTime) -> p Value (f Value)
_LocalTime =
forall (p :: * -> * -> *) (f :: * -> *) b t s a.
(Choice p, Applicative f) =>
(b -> t) -> (s -> Either t a) -> p a (f b) -> p s (f t)
prism LocalTime -> Value
LocalTime forall a b. (a -> b) -> a -> b
$ \ Value
n -> case Value
n of
LocalTime LocalTime
v -> forall a b. b -> Either a b
Right LocalTime
v
Value
_ -> forall a b. a -> Either a b
Left Value
n
{-# INLINE _LocalTime #-}
_Day
:: (Choice p, Applicative f)
=> p Time.Day (f Time.Day)
-> p Value (f Value)
_Day :: forall (p :: * -> * -> *) (f :: * -> *).
(Choice p, Applicative f) =>
p Day (f Day) -> p Value (f Value)
_Day =
forall (p :: * -> * -> *) (f :: * -> *) b t s a.
(Choice p, Applicative f) =>
(b -> t) -> (s -> Either t a) -> p a (f b) -> p s (f t)
prism Day -> Value
Day forall a b. (a -> b) -> a -> b
$ \ Value
n -> case Value
n of
Day Day
v -> forall a b. b -> Either a b
Right Day
v
Value
_ -> forall a b. a -> Either a b
Left Value
n
{-# INLINE _Day #-}
_TimeOfDay
:: (Choice p, Applicative f)
=> p Time.TimeOfDay (f Time.TimeOfDay)
-> p Value (f Value)
_TimeOfDay :: forall (p :: * -> * -> *) (f :: * -> *).
(Choice p, Applicative f) =>
p TimeOfDay (f TimeOfDay) -> p Value (f Value)
_TimeOfDay =
forall (p :: * -> * -> *) (f :: * -> *) b t s a.
(Choice p, Applicative f) =>
(b -> t) -> (s -> Either t a) -> p a (f b) -> p s (f t)
prism TimeOfDay -> Value
TimeOfDay forall a b. (a -> b) -> a -> b
$ \ Value
n -> case Value
n of
TimeOfDay TimeOfDay
v -> forall a b. b -> Either a b
Right TimeOfDay
v
Value
_ -> forall a b. a -> Either a b
Left Value
n
{-# INLINE _TimeOfDay #-}