{-# OPTIONS_GHC -Wall #-}
{-# LANGUAGE TemplateHaskell #-}

module Data.Aviation.Casr.Logbook.Meta.Image(
  Image(Image)
, HasImage(..)
, imageUriType
, imageurismall'
, imagesource'
, imagename'
) where

import Control.Category ( Category((.)) )
import Control.Lens(makeClassy, Traversal', _Just)
import Data.Aviation.Casr.Logbook.Meta.ImageType ( ImageType )
import Data.Eq(Eq)
import Data.Maybe(Maybe(..))
import Data.Ord(Ord)
import Data.String(String)
import Prelude(Show)

data Image =
  Image {
    Image -> String
_imageuri :: String
  , Image -> Maybe String
_imageurismall :: Maybe String
  , Image -> ImageType
_imagetype :: ImageType
  , Image -> Maybe String
_imagesource :: Maybe String
  , Image -> Maybe String
_imagename :: Maybe String
  } deriving (Image -> Image -> Bool
(Image -> Image -> Bool) -> (Image -> Image -> Bool) -> Eq Image
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Image -> Image -> Bool
== :: Image -> Image -> Bool
$c/= :: Image -> Image -> Bool
/= :: Image -> Image -> Bool
Eq, Eq Image
Eq Image =>
(Image -> Image -> Ordering)
-> (Image -> Image -> Bool)
-> (Image -> Image -> Bool)
-> (Image -> Image -> Bool)
-> (Image -> Image -> Bool)
-> (Image -> Image -> Image)
-> (Image -> Image -> Image)
-> Ord Image
Image -> Image -> Bool
Image -> Image -> Ordering
Image -> Image -> Image
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: Image -> Image -> Ordering
compare :: Image -> Image -> Ordering
$c< :: Image -> Image -> Bool
< :: Image -> Image -> Bool
$c<= :: Image -> Image -> Bool
<= :: Image -> Image -> Bool
$c> :: Image -> Image -> Bool
> :: Image -> Image -> Bool
$c>= :: Image -> Image -> Bool
>= :: Image -> Image -> Bool
$cmax :: Image -> Image -> Image
max :: Image -> Image -> Image
$cmin :: Image -> Image -> Image
min :: Image -> Image -> Image
Ord, Int -> Image -> ShowS
[Image] -> ShowS
Image -> String
(Int -> Image -> ShowS)
-> (Image -> String) -> ([Image] -> ShowS) -> Show Image
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Image -> ShowS
showsPrec :: Int -> Image -> ShowS
$cshow :: Image -> String
show :: Image -> String
$cshowList :: [Image] -> ShowS
showList :: [Image] -> ShowS
Show)

makeClassy ''Image

imageUriType ::
  String
  -> ImageType
  -> Image
imageUriType :: String -> ImageType -> Image
imageUriType String
s ImageType
t =
  String
-> Maybe String
-> ImageType
-> Maybe String
-> Maybe String
-> Image
Image String
s Maybe String
forall a. Maybe a
Nothing ImageType
t Maybe String
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing

imageurismall' ::
  HasImage c => Traversal' c String
imageurismall' :: forall c. HasImage c => Traversal' c String
imageurismall' =
  (Maybe String -> f (Maybe String)) -> c -> f c
forall c. HasImage c => Lens' c (Maybe String)
Lens' c (Maybe String)
imageurismall ((Maybe String -> f (Maybe String)) -> c -> f c)
-> ((String -> f String) -> Maybe String -> f (Maybe String))
-> (String -> f String)
-> c
-> f c
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. (String -> f String) -> Maybe String -> f (Maybe String)
forall a b (p :: * -> * -> *) (f :: * -> *).
(Choice p, Applicative f) =>
p a (f b) -> p (Maybe a) (f (Maybe b))
_Just

imagesource' ::
  HasImage c => Traversal' c String
imagesource' :: forall c. HasImage c => Traversal' c String
imagesource' =
  (Maybe String -> f (Maybe String)) -> c -> f c
forall c. HasImage c => Lens' c (Maybe String)
Lens' c (Maybe String)
imagesource ((Maybe String -> f (Maybe String)) -> c -> f c)
-> ((String -> f String) -> Maybe String -> f (Maybe String))
-> (String -> f String)
-> c
-> f c
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. (String -> f String) -> Maybe String -> f (Maybe String)
forall a b (p :: * -> * -> *) (f :: * -> *).
(Choice p, Applicative f) =>
p a (f b) -> p (Maybe a) (f (Maybe b))
_Just

imagename' ::
  HasImage c => Traversal' c String
imagename' :: forall c. HasImage c => Traversal' c String
imagename' =
  (Maybe String -> f (Maybe String)) -> c -> f c
forall c. HasImage c => Lens' c (Maybe String)
Lens' c (Maybe String)
imagename ((Maybe String -> f (Maybe String)) -> c -> f c)
-> ((String -> f String) -> Maybe String -> f (Maybe String))
-> (String -> f String)
-> c
-> f c
forall b c a. (b -> c) -> (a -> b) -> a -> c
forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
. (String -> f String) -> Maybe String -> f (Maybe String)
forall a b (p :: * -> * -> *) (f :: * -> *).
(Choice p, Applicative f) =>
p a (f b) -> p (Maybe a) (f (Maybe b))
_Just