{-# LANGUAGE RankNTypes #-}

module Web.Exhentai.Parsing.Gallery where

import Control.Lens
import Data.Text (Text, pack)
import Text.XML hiding (readFile)
import Text.XML.Lens
import Web.Exhentai.Types
  ( AverageRating,
    Gallery,
    GalleryCat,
    PopUpLink,
    _AverageRating,
    _GalleryCat,
    _GalleryLink,
    _PopUpLink,
  )
import Web.Exhentai.Utils
import Prelude hiding (div, id, readFile)

data TagCategory
  = Language
  | Parody
  | Character
  | Group
  | Artist
  | Male
  | Female
  | Misc
  deriving (Int -> TagCategory -> ShowS
[TagCategory] -> ShowS
TagCategory -> String
(Int -> TagCategory -> ShowS)
-> (TagCategory -> String)
-> ([TagCategory] -> ShowS)
-> Show TagCategory
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [TagCategory] -> ShowS
$cshowList :: [TagCategory] -> ShowS
show :: TagCategory -> String
$cshow :: TagCategory -> String
showsPrec :: Int -> TagCategory -> ShowS
$cshowsPrec :: Int -> TagCategory -> ShowS
Show, TagCategory -> TagCategory -> Bool
(TagCategory -> TagCategory -> Bool)
-> (TagCategory -> TagCategory -> Bool) -> Eq TagCategory
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: TagCategory -> TagCategory -> Bool
$c/= :: TagCategory -> TagCategory -> Bool
== :: TagCategory -> TagCategory -> Bool
$c== :: TagCategory -> TagCategory -> Bool
Eq, Int -> TagCategory
TagCategory -> Int
TagCategory -> [TagCategory]
TagCategory -> TagCategory
TagCategory -> TagCategory -> [TagCategory]
TagCategory -> TagCategory -> TagCategory -> [TagCategory]
(TagCategory -> TagCategory)
-> (TagCategory -> TagCategory)
-> (Int -> TagCategory)
-> (TagCategory -> Int)
-> (TagCategory -> [TagCategory])
-> (TagCategory -> TagCategory -> [TagCategory])
-> (TagCategory -> TagCategory -> [TagCategory])
-> (TagCategory -> TagCategory -> TagCategory -> [TagCategory])
-> Enum TagCategory
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
enumFromThenTo :: TagCategory -> TagCategory -> TagCategory -> [TagCategory]
$cenumFromThenTo :: TagCategory -> TagCategory -> TagCategory -> [TagCategory]
enumFromTo :: TagCategory -> TagCategory -> [TagCategory]
$cenumFromTo :: TagCategory -> TagCategory -> [TagCategory]
enumFromThen :: TagCategory -> TagCategory -> [TagCategory]
$cenumFromThen :: TagCategory -> TagCategory -> [TagCategory]
enumFrom :: TagCategory -> [TagCategory]
$cenumFrom :: TagCategory -> [TagCategory]
fromEnum :: TagCategory -> Int
$cfromEnum :: TagCategory -> Int
toEnum :: Int -> TagCategory
$ctoEnum :: Int -> TagCategory
pred :: TagCategory -> TagCategory
$cpred :: TagCategory -> TagCategory
succ :: TagCategory -> TagCategory
$csucc :: TagCategory -> TagCategory
Enum)

readTagCat :: Text -> Maybe TagCategory
readTagCat :: Text -> Maybe TagCategory
readTagCat Text
"language:" = TagCategory -> Maybe TagCategory
forall a. a -> Maybe a
Just TagCategory
Language
readTagCat Text
"parody:" = TagCategory -> Maybe TagCategory
forall a. a -> Maybe a
Just TagCategory
Parody
readTagCat Text
"character:" = TagCategory -> Maybe TagCategory
forall a. a -> Maybe a
Just TagCategory
Character
readTagCat Text
"group:" = TagCategory -> Maybe TagCategory
forall a. a -> Maybe a
Just TagCategory
Group
readTagCat Text
"artist:" = TagCategory -> Maybe TagCategory
forall a. a -> Maybe a
Just TagCategory
Artist
readTagCat Text
"male:" = TagCategory -> Maybe TagCategory
forall a. a -> Maybe a
Just TagCategory
Male
readTagCat Text
"female:" = TagCategory -> Maybe TagCategory
forall a. a -> Maybe a
Just TagCategory
Female
readTagCat Text
"misc:" = TagCategory -> Maybe TagCategory
forall a. a -> Maybe a
Just TagCategory
Misc
readTagCat Text
_ = Maybe TagCategory
forall a. Maybe a
Nothing

_TagCategory :: Prism' Text TagCategory
_TagCategory :: p TagCategory (f TagCategory) -> p Text (f Text)
_TagCategory = (TagCategory -> Text)
-> (Text -> Maybe TagCategory)
-> Prism Text Text TagCategory TagCategory
forall b s a. (b -> s) -> (s -> Maybe a) -> Prism s s a b
prism' (String -> Text
pack (String -> Text) -> (TagCategory -> String) -> TagCategory -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TagCategory -> String
forall a. Show a => a -> String
show) Text -> Maybe TagCategory
readTagCat

meta :: Traversal' Element Element
meta :: (Element -> f Element) -> Element -> f Element
meta = (Element -> f Element) -> Element -> f Element
Traversal' Element Element
div ((Element -> f Element) -> Element -> f Element)
-> ((Element -> f Element) -> Element -> f Element)
-> (Element -> f Element)
-> Element
-> f Element
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> Traversal' Element Element
cl Text
"gm"

title :: Traversal' Element Element
title :: (Element -> f Element) -> Element -> f Element
title = (Element -> f Element) -> Element -> f Element
Traversal' Element Element
meta ((Element -> f Element) -> Element -> f Element)
-> ((Element -> f Element) -> Element -> f Element)
-> (Element -> f Element)
-> Element
-> f Element
forall k (f :: Type -> Type) c s t (p :: k -> Type -> Type)
       (a :: k) b.
(Applicative f, Plated c) =>
LensLike f s t c c -> Over p f c c a b -> Over p f s t a b
... (Element -> f Element) -> Element -> f Element
Traversal' Element Element
div ((Element -> f Element) -> Element -> f Element)
-> ((Element -> f Element) -> Element -> f Element)
-> (Element -> f Element)
-> Element
-> f Element
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> Traversal' Element Element
id Text
"gd2"

enTitle :: Traversal' Element Text
enTitle :: (Text -> f Text) -> Element -> f Element
enTitle = (Element -> f Element) -> Element -> f Element
Traversal' Element Element
title ((Element -> f Element) -> Element -> f Element)
-> ((Text -> f Text) -> Element -> f Element)
-> (Text -> f Text)
-> Element
-> f Element
forall k (f :: Type -> Type) c s t (p :: k -> Type -> Type)
       (a :: k) b.
(Applicative f, Plated c) =>
LensLike f s t c c -> Over p f c c a b -> Over p f s t a b
... (Element -> f Element) -> Element -> f Element
Traversal' Element Element
h1 ((Element -> f Element) -> Element -> f Element)
-> ((Text -> f Text) -> Element -> f Element)
-> (Text -> f Text)
-> Element
-> f Element
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> Traversal' Element Element
id Text
"gn" ((Element -> f Element) -> Element -> f Element)
-> ((Text -> f Text) -> Element -> f Element)
-> (Text -> f Text)
-> Element
-> f Element
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Node -> f Node) -> Element -> f Element
Traversal' Element Node
lower ((Node -> f Node) -> Element -> f Element)
-> ((Text -> f Text) -> Node -> f Node)
-> (Text -> f Text)
-> Element
-> f Element
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Text -> f Text) -> Node -> f Node
Prism' Node Text
_Content

jaTitle :: Traversal' Element Text
jaTitle :: (Text -> f Text) -> Element -> f Element
jaTitle = (Element -> f Element) -> Element -> f Element
Traversal' Element Element
title ((Element -> f Element) -> Element -> f Element)
-> ((Text -> f Text) -> Element -> f Element)
-> (Text -> f Text)
-> Element
-> f Element
forall k (f :: Type -> Type) c s t (p :: k -> Type -> Type)
       (a :: k) b.
(Applicative f, Plated c) =>
LensLike f s t c c -> Over p f c c a b -> Over p f s t a b
... (Element -> f Element) -> Element -> f Element
Traversal' Element Element
h1 ((Element -> f Element) -> Element -> f Element)
-> ((Text -> f Text) -> Element -> f Element)
-> (Text -> f Text)
-> Element
-> f Element
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> Traversal' Element Element
id Text
"gj" ((Element -> f Element) -> Element -> f Element)
-> ((Text -> f Text) -> Element -> f Element)
-> (Text -> f Text)
-> Element
-> f Element
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Node -> f Node) -> Element -> f Element
Traversal' Element Node
lower ((Node -> f Node) -> Element -> f Element)
-> ((Text -> f Text) -> Node -> f Node)
-> (Text -> f Text)
-> Element
-> f Element
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Text -> f Text) -> Node -> f Node
Prism' Node Text
_Content

mainMeta :: Traversal' Element Element
mainMeta :: (Element -> f Element) -> Element -> f Element
mainMeta = (Element -> f Element) -> Element -> f Element
Traversal' Element Element
meta ((Element -> f Element) -> Element -> f Element)
-> ((Element -> f Element) -> Element -> f Element)
-> (Element -> f Element)
-> Element
-> f Element
forall k (f :: Type -> Type) c s t (p :: k -> Type -> Type)
       (a :: k) b.
(Applicative f, Plated c) =>
LensLike f s t c c -> Over p f c c a b -> Over p f s t a b
... (Element -> f Element) -> Element -> f Element
Traversal' Element Element
div ((Element -> f Element) -> Element -> f Element)
-> ((Element -> f Element) -> Element -> f Element)
-> (Element -> f Element)
-> Element
-> f Element
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> Traversal' Element Element
id Text
"gmid"

mainMetaL :: Traversal' Element Element
mainMetaL :: (Element -> f Element) -> Element -> f Element
mainMetaL = (Element -> f Element) -> Element -> f Element
Traversal' Element Element
mainMeta ((Element -> f Element) -> Element -> f Element)
-> ((Element -> f Element) -> Element -> f Element)
-> (Element -> f Element)
-> Element
-> f Element
forall k (f :: Type -> Type) c s t (p :: k -> Type -> Type)
       (a :: k) b.
(Applicative f, Plated c) =>
LensLike f s t c c -> Over p f c c a b -> Over p f s t a b
... (Element -> f Element) -> Element -> f Element
Traversal' Element Element
div ((Element -> f Element) -> Element -> f Element)
-> ((Element -> f Element) -> Element -> f Element)
-> (Element -> f Element)
-> Element
-> f Element
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> Traversal' Element Element
id Text
"gd3"

mainMetaM :: Traversal' Element Element
mainMetaM :: (Element -> f Element) -> Element -> f Element
mainMetaM = (Element -> f Element) -> Element -> f Element
Traversal' Element Element
mainMeta ((Element -> f Element) -> Element -> f Element)
-> ((Element -> f Element) -> Element -> f Element)
-> (Element -> f Element)
-> Element
-> f Element
forall k (f :: Type -> Type) c s t (p :: k -> Type -> Type)
       (a :: k) b.
(Applicative f, Plated c) =>
LensLike f s t c c -> Over p f c c a b -> Over p f s t a b
... (Element -> f Element) -> Element -> f Element
Traversal' Element Element
div ((Element -> f Element) -> Element -> f Element)
-> ((Element -> f Element) -> Element -> f Element)
-> (Element -> f Element)
-> Element
-> f Element
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> Traversal' Element Element
id Text
"gd4"

mainMetaR :: Traversal' Element Element
mainMetaR :: (Element -> f Element) -> Element -> f Element
mainMetaR = (Element -> f Element) -> Element -> f Element
Traversal' Element Element
mainMeta ((Element -> f Element) -> Element -> f Element)
-> ((Element -> f Element) -> Element -> f Element)
-> (Element -> f Element)
-> Element
-> f Element
forall k (f :: Type -> Type) c s t (p :: k -> Type -> Type)
       (a :: k) b.
(Applicative f, Plated c) =>
LensLike f s t c c -> Over p f c c a b -> Over p f s t a b
... (Element -> f Element) -> Element -> f Element
Traversal' Element Element
div ((Element -> f Element) -> Element -> f Element)
-> ((Element -> f Element) -> Element -> f Element)
-> (Element -> f Element)
-> Element
-> f Element
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> Traversal' Element Element
id Text
"gd5"

previewStr :: Traversal' Element Text
previewStr :: (Text -> f Text) -> Element -> f Element
previewStr = (Element -> f Element) -> Element -> f Element
Traversal' Element Element
meta ((Element -> f Element) -> Element -> f Element)
-> ((Text -> f Text) -> Element -> f Element)
-> (Text -> f Text)
-> Element
-> f Element
forall k (f :: Type -> Type) c s t (p :: k -> Type -> Type)
       (a :: k) b.
(Applicative f, Plated c) =>
LensLike f s t c c -> Over p f c c a b -> Over p f s t a b
... Text -> Traversal' Element Element
id Text
"gleft" ((Element -> f Element) -> Element -> f Element)
-> ((Text -> f Text) -> Element -> f Element)
-> (Text -> f Text)
-> Element
-> f Element
forall k (f :: Type -> Type) c s t (p :: k -> Type -> Type)
       (a :: k) b.
(Applicative f, Plated c) =>
LensLike f s t c c -> Over p f c c a b -> Over p f s t a b
... Text -> Traversal' Element Element
id Text
"gd1" ((Element -> f Element) -> Element -> f Element)
-> ((Text -> f Text) -> Element -> f Element)
-> (Text -> f Text)
-> Element
-> f Element
forall k (f :: Type -> Type) c s t (p :: k -> Type -> Type)
       (a :: k) b.
(Applicative f, Plated c) =>
LensLike f s t c c -> Over p f c c a b -> Over p f s t a b
... Name -> Traversal' Element Text
attr Name
"style"

category :: Traversal' Element GalleryCat
category :: (GalleryCat -> f GalleryCat) -> Element -> f Element
category = (Element -> f Element) -> Element -> f Element
Traversal' Element Element
mainMetaL ((Element -> f Element) -> Element -> f Element)
-> ((GalleryCat -> f GalleryCat) -> Element -> f Element)
-> (GalleryCat -> f GalleryCat)
-> Element
-> f Element
forall k (f :: Type -> Type) c s t (p :: k -> Type -> Type)
       (a :: k) b.
(Applicative f, Plated c) =>
LensLike f s t c c -> Over p f c c a b -> Over p f s t a b
... (Element -> f Element) -> Element -> f Element
Traversal' Element Element
div ((Element -> f Element) -> Element -> f Element)
-> ((GalleryCat -> f GalleryCat) -> Element -> f Element)
-> (GalleryCat -> f GalleryCat)
-> Element
-> f Element
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> Traversal' Element Element
id Text
"gdc" ((Element -> f Element) -> Element -> f Element)
-> ((GalleryCat -> f GalleryCat) -> Element -> f Element)
-> (GalleryCat -> f GalleryCat)
-> Element
-> f Element
forall k (f :: Type -> Type) c s t (p :: k -> Type -> Type)
       (a :: k) b.
(Applicative f, Plated c) =>
LensLike f s t c c -> Over p f c c a b -> Over p f s t a b
... (Element -> f Element) -> Element -> f Element
Traversal' Element Element
div ((Element -> f Element) -> Element -> f Element)
-> ((GalleryCat -> f GalleryCat) -> Element -> f Element)
-> (GalleryCat -> f GalleryCat)
-> Element
-> f Element
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Node -> f Node) -> Element -> f Element
Traversal' Element Node
lower ((Node -> f Node) -> Element -> f Element)
-> ((GalleryCat -> f GalleryCat) -> Node -> f Node)
-> (GalleryCat -> f GalleryCat)
-> Element
-> f Element
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Text -> f Text) -> Node -> f Node
Prism' Node Text
_Content ((Text -> f Text) -> Node -> f Node)
-> ((GalleryCat -> f GalleryCat) -> Text -> f Text)
-> (GalleryCat -> f GalleryCat)
-> Node
-> f Node
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (GalleryCat -> f GalleryCat) -> Text -> f Text
Prism' Text GalleryCat
_GalleryCat

uploader :: Traversal' Element Text
uploader :: (Text -> f Text) -> Element -> f Element
uploader = (Element -> f Element) -> Element -> f Element
Traversal' Element Element
mainMetaL ((Element -> f Element) -> Element -> f Element)
-> ((Text -> f Text) -> Element -> f Element)
-> (Text -> f Text)
-> Element
-> f Element
forall k (f :: Type -> Type) c s t (p :: k -> Type -> Type)
       (a :: k) b.
(Applicative f, Plated c) =>
LensLike f s t c c -> Over p f c c a b -> Over p f s t a b
... (Element -> f Element) -> Element -> f Element
Traversal' Element Element
div ((Element -> f Element) -> Element -> f Element)
-> ((Text -> f Text) -> Element -> f Element)
-> (Text -> f Text)
-> Element
-> f Element
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> Traversal' Element Element
id Text
"gdn" ((Element -> f Element) -> Element -> f Element)
-> ((Text -> f Text) -> Element -> f Element)
-> (Text -> f Text)
-> Element
-> f Element
forall k (f :: Type -> Type) c s t (p :: k -> Type -> Type)
       (a :: k) b.
(Applicative f, Plated c) =>
LensLike f s t c c -> Over p f c c a b -> Over p f s t a b
... (Element -> f Element) -> Element -> f Element
Traversal' Element Element
a ((Element -> f Element) -> Element -> f Element)
-> ((Text -> f Text) -> Element -> f Element)
-> (Text -> f Text)
-> Element
-> f Element
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Node -> f Node) -> Element -> f Element
Traversal' Element Node
lower ((Node -> f Node) -> Element -> f Element)
-> ((Text -> f Text) -> Node -> f Node)
-> (Text -> f Text)
-> Element
-> f Element
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Text -> f Text) -> Node -> f Node
Prism' Node Text
_Content

metaPath :: Traversal' Element Element
metaPath :: (Element -> f Element) -> Element -> f Element
metaPath = (Element -> f Element) -> Element -> f Element
Traversal' Element Element
mainMetaL ((Element -> f Element) -> Element -> f Element)
-> ((Element -> f Element) -> Element -> f Element)
-> (Element -> f Element)
-> Element
-> f Element
forall k (f :: Type -> Type) c s t (p :: k -> Type -> Type)
       (a :: k) b.
(Applicative f, Plated c) =>
LensLike f s t c c -> Over p f c c a b -> Over p f s t a b
... (Element -> f Element) -> Element -> f Element
Traversal' Element Element
div ((Element -> f Element) -> Element -> f Element)
-> ((Element -> f Element) -> Element -> f Element)
-> (Element -> f Element)
-> Element
-> f Element
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> Traversal' Element Element
id Text
"gdd" ((Element -> f Element) -> Element -> f Element)
-> ((Element -> f Element) -> Element -> f Element)
-> (Element -> f Element)
-> Element
-> f Element
forall k (f :: Type -> Type) c s t (p :: k -> Type -> Type)
       (a :: k) b.
(Applicative f, Plated c) =>
LensLike f s t c c -> Over p f c c a b -> Over p f s t a b
... (Element -> f Element) -> Element -> f Element
Traversal' Element Element
table ((Element -> f Element) -> Element -> f Element)
-> ((Element -> f Element) -> Element -> f Element)
-> (Element -> f Element)
-> Element
-> f Element
forall k (f :: Type -> Type) c s t (p :: k -> Type -> Type)
       (a :: k) b.
(Applicative f, Plated c) =>
LensLike f s t c c -> Over p f c c a b -> Over p f s t a b
... (Element -> f Element) -> Element -> f Element
Traversal' Element Element
tr

metaKeys :: Traversal' Element Text
metaKeys :: (Text -> f Text) -> Element -> f Element
metaKeys = (Element -> f Element) -> Element -> f Element
Traversal' Element Element
metaPath ((Element -> f Element) -> Element -> f Element)
-> ((Text -> f Text) -> Element -> f Element)
-> (Text -> f Text)
-> Element
-> f Element
forall k (f :: Type -> Type) c s t (p :: k -> Type -> Type)
       (a :: k) b.
(Applicative f, Plated c) =>
LensLike f s t c c -> Over p f c c a b -> Over p f s t a b
... Text -> Traversal' Element Element
cl Text
"gdt1" ((Element -> f Element) -> Element -> f Element)
-> ((Text -> f Text) -> Element -> f Element)
-> (Text -> f Text)
-> Element
-> f Element
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Node -> f Node) -> Element -> f Element
Traversal' Element Node
lower ((Node -> f Node) -> Element -> f Element)
-> ((Text -> f Text) -> Node -> f Node)
-> (Text -> f Text)
-> Element
-> f Element
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Text -> f Text) -> Node -> f Node
Prism' Node Text
_Content

metaValues :: Traversal' Element Element
metaValues :: (Element -> f Element) -> Element -> f Element
metaValues = (Element -> f Element) -> Element -> f Element
Traversal' Element Element
metaPath ((Element -> f Element) -> Element -> f Element)
-> ((Element -> f Element) -> Element -> f Element)
-> (Element -> f Element)
-> Element
-> f Element
forall k (f :: Type -> Type) c s t (p :: k -> Type -> Type)
       (a :: k) b.
(Applicative f, Plated c) =>
LensLike f s t c c -> Over p f c c a b -> Over p f s t a b
... Text -> Traversal' Element Element
cl Text
"gdt2"

parent :: Traversal' Element Gallery
parent :: (Gallery -> f Gallery) -> Element -> f Element
parent = (Node -> f Node) -> Element -> f Element
Traversal' Element Node
lower ((Node -> f Node) -> Element -> f Element)
-> ((Gallery -> f Gallery) -> Node -> f Node)
-> (Gallery -> f Gallery)
-> Element
-> f Element
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Element -> f Element) -> Node -> f Node
Prism' Node Element
_Element ((Element -> f Element) -> Node -> f Node)
-> ((Gallery -> f Gallery) -> Element -> f Element)
-> (Gallery -> f Gallery)
-> Node
-> f Node
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Name -> Traversal' Element Text
attr Name
"href" ((Text -> f Text) -> Element -> f Element)
-> ((Gallery -> f Gallery) -> Text -> f Text)
-> (Gallery -> f Gallery)
-> Element
-> f Element
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Gallery -> f Gallery) -> Text -> f Text
Prism' Text Gallery
_GalleryLink

ratingCount :: Traversal' Element Int
ratingCount :: (Int -> f Int) -> Element -> f Element
ratingCount =
  (Element -> f Element) -> Element -> f Element
Traversal' Element Element
mainMetaL ((Element -> f Element) -> Element -> f Element)
-> ((Int -> f Int) -> Element -> f Element)
-> (Int -> f Int)
-> Element
-> f Element
forall k (f :: Type -> Type) c s t (p :: k -> Type -> Type)
       (a :: k) b.
(Applicative f, Plated c) =>
LensLike f s t c c -> Over p f c c a b -> Over p f s t a b
... Text -> Traversal' Element Element
id Text
"gdr" ((Element -> f Element) -> Element -> f Element)
-> ((Int -> f Int) -> Element -> f Element)
-> (Int -> f Int)
-> Element
-> f Element
forall k (f :: Type -> Type) c s t (p :: k -> Type -> Type)
       (a :: k) b.
(Applicative f, Plated c) =>
LensLike f s t c c -> Over p f c c a b -> Over p f s t a b
... (Element -> f Element) -> Element -> f Element
Traversal' Element Element
table ((Element -> f Element) -> Element -> f Element)
-> ((Int -> f Int) -> Element -> f Element)
-> (Int -> f Int)
-> Element
-> f Element
forall k (f :: Type -> Type) c s t (p :: k -> Type -> Type)
       (a :: k) b.
(Applicative f, Plated c) =>
LensLike f s t c c -> Over p f c c a b -> Over p f s t a b
... (Element -> f Element) -> Element -> f Element
Traversal' Element Element
tr ((Element -> f Element) -> Element -> f Element)
-> ((Int -> f Int) -> Element -> f Element)
-> (Int -> f Int)
-> Element
-> f Element
forall k (f :: Type -> Type) c s t (p :: k -> Type -> Type)
       (a :: k) b.
(Applicative f, Plated c) =>
LensLike f s t c c -> Over p f c c a b -> Over p f s t a b
... Text -> Traversal' Element Element
id Text
"grt3" ((Element -> f Element) -> Element -> f Element)
-> ((Int -> f Int) -> Element -> f Element)
-> (Int -> f Int)
-> Element
-> f Element
forall k (f :: Type -> Type) c s t (p :: k -> Type -> Type)
       (a :: k) b.
(Applicative f, Plated c) =>
LensLike f s t c c -> Over p f c c a b -> Over p f s t a b
... (Node -> f Node) -> Element -> f Element
Traversal' Element Node
lower ((Node -> f Node) -> Element -> f Element)
-> ((Int -> f Int) -> Node -> f Node)
-> (Int -> f Int)
-> Element
-> f Element
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Text -> f Text) -> Node -> f Node
Prism' Node Text
_Content ((Text -> f Text) -> Node -> f Node)
-> ((Int -> f Int) -> Text -> f Text)
-> (Int -> f Int)
-> Node
-> f Node
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Int -> f Int) -> Text -> f Text
forall a. (Show a, Read a) => Prism' Text a
viaShowRead

averageRating :: Traversal' Element AverageRating
averageRating :: (AverageRating -> f AverageRating) -> Element -> f Element
averageRating =
  (Element -> f Element) -> Element -> f Element
Traversal' Element Element
mainMetaL ((Element -> f Element) -> Element -> f Element)
-> ((AverageRating -> f AverageRating) -> Element -> f Element)
-> (AverageRating -> f AverageRating)
-> Element
-> f Element
forall k (f :: Type -> Type) c s t (p :: k -> Type -> Type)
       (a :: k) b.
(Applicative f, Plated c) =>
LensLike f s t c c -> Over p f c c a b -> Over p f s t a b
... Text -> Traversal' Element Element
id Text
"gdr" ((Element -> f Element) -> Element -> f Element)
-> ((AverageRating -> f AverageRating) -> Element -> f Element)
-> (AverageRating -> f AverageRating)
-> Element
-> f Element
forall k (f :: Type -> Type) c s t (p :: k -> Type -> Type)
       (a :: k) b.
(Applicative f, Plated c) =>
LensLike f s t c c -> Over p f c c a b -> Over p f s t a b
... (Element -> f Element) -> Element -> f Element
Traversal' Element Element
table ((Element -> f Element) -> Element -> f Element)
-> ((AverageRating -> f AverageRating) -> Element -> f Element)
-> (AverageRating -> f AverageRating)
-> Element
-> f Element
forall k (f :: Type -> Type) c s t (p :: k -> Type -> Type)
       (a :: k) b.
(Applicative f, Plated c) =>
LensLike f s t c c -> Over p f c c a b -> Over p f s t a b
... (Element -> f Element) -> Element -> f Element
Traversal' Element Element
tr ((Element -> f Element) -> Element -> f Element)
-> ((AverageRating -> f AverageRating) -> Element -> f Element)
-> (AverageRating -> f AverageRating)
-> Element
-> f Element
forall k (f :: Type -> Type) c s t (p :: k -> Type -> Type)
       (a :: k) b.
(Applicative f, Plated c) =>
LensLike f s t c c -> Over p f c c a b -> Over p f s t a b
... Text -> Traversal' Element Element
id Text
"rating_label" ((Element -> f Element) -> Element -> f Element)
-> ((AverageRating -> f AverageRating) -> Element -> f Element)
-> (AverageRating -> f AverageRating)
-> Element
-> f Element
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Node -> f Node) -> Element -> f Element
Traversal' Element Node
lower ((Node -> f Node) -> Element -> f Element)
-> ((AverageRating -> f AverageRating) -> Node -> f Node)
-> (AverageRating -> f AverageRating)
-> Element
-> f Element
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Text -> f Text) -> Node -> f Node
Prism' Node Text
_Content ((Text -> f Text) -> Node -> f Node)
-> ((AverageRating -> f AverageRating) -> Text -> f Text)
-> (AverageRating -> f AverageRating)
-> Node
-> f Node
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (AverageRating -> f AverageRating) -> Text -> f Text
Prism' Text AverageRating
_AverageRating

tagList :: Traversal' Element Element
tagList :: (Element -> f Element) -> Element -> f Element
tagList = (Element -> f Element) -> Element -> f Element
Traversal' Element Element
mainMetaM ((Element -> f Element) -> Element -> f Element)
-> ((Element -> f Element) -> Element -> f Element)
-> (Element -> f Element)
-> Element
-> f Element
forall k (f :: Type -> Type) c s t (p :: k -> Type -> Type)
       (a :: k) b.
(Applicative f, Plated c) =>
LensLike f s t c c -> Over p f c c a b -> Over p f s t a b
... (Element -> f Element) -> Element -> f Element
Traversal' Element Element
div ((Element -> f Element) -> Element -> f Element)
-> ((Element -> f Element) -> Element -> f Element)
-> (Element -> f Element)
-> Element
-> f Element
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> Traversal' Element Element
id Text
"taglist" ((Element -> f Element) -> Element -> f Element)
-> ((Element -> f Element) -> Element -> f Element)
-> (Element -> f Element)
-> Element
-> f Element
forall k (f :: Type -> Type) c s t (p :: k -> Type -> Type)
       (a :: k) b.
(Applicative f, Plated c) =>
LensLike f s t c c -> Over p f c c a b -> Over p f s t a b
... (Element -> f Element) -> Element -> f Element
Traversal' Element Element
table ((Element -> f Element) -> Element -> f Element)
-> ((Element -> f Element) -> Element -> f Element)
-> (Element -> f Element)
-> Element
-> f Element
forall k (f :: Type -> Type) c s t (p :: k -> Type -> Type)
       (a :: k) b.
(Applicative f, Plated c) =>
LensLike f s t c c -> Over p f c c a b -> Over p f s t a b
... (Element -> f Element) -> Element -> f Element
Traversal' Element Element
tr

tagCategory :: Traversal' Element TagCategory
tagCategory :: (TagCategory -> f TagCategory) -> Element -> f Element
tagCategory = (Element -> f Element) -> Element -> f Element
Traversal' Element Element
tagList ((Element -> f Element) -> Element -> f Element)
-> ((TagCategory -> f TagCategory) -> Element -> f Element)
-> (TagCategory -> f TagCategory)
-> Element
-> f Element
forall k (f :: Type -> Type) c s t (p :: k -> Type -> Type)
       (a :: k) b.
(Applicative f, Plated c) =>
LensLike f s t c c -> Over p f c c a b -> Over p f s t a b
... (Element -> f Element) -> Element -> f Element
Traversal' Element Element
td ((Element -> f Element) -> Element -> f Element)
-> ((TagCategory -> f TagCategory) -> Element -> f Element)
-> (TagCategory -> f TagCategory)
-> Element
-> f Element
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> Traversal' Element Element
cl Text
"tc" ((Element -> f Element) -> Element -> f Element)
-> ((TagCategory -> f TagCategory) -> Element -> f Element)
-> (TagCategory -> f TagCategory)
-> Element
-> f Element
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Node -> f Node) -> Element -> f Element
Traversal' Element Node
lower ((Node -> f Node) -> Element -> f Element)
-> ((TagCategory -> f TagCategory) -> Node -> f Node)
-> (TagCategory -> f TagCategory)
-> Element
-> f Element
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Text -> f Text) -> Node -> f Node
Prism' Node Text
_Content ((Text -> f Text) -> Node -> f Node)
-> ((TagCategory -> f TagCategory) -> Text -> f Text)
-> (TagCategory -> f TagCategory)
-> Node
-> f Node
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (TagCategory -> f TagCategory) -> Text -> f Text
Prism Text Text TagCategory TagCategory
_TagCategory

tagsByCategory :: Traversal' Element Element
tagsByCategory :: (Element -> f Element) -> Element -> f Element
tagsByCategory = (Element -> f Element) -> Element -> f Element
Traversal' Element Element
tagList ((Element -> f Element) -> Element -> f Element)
-> ((Element -> f Element) -> Element -> f Element)
-> (Element -> f Element)
-> Element
-> f Element
forall k (f :: Type -> Type) c s t (p :: k -> Type -> Type)
       (a :: k) b.
(Applicative f, Plated c) =>
LensLike f s t c c -> Over p f c c a b -> Over p f s t a b
... (Element -> f Element) -> Element -> f Element
Traversal' Element Element
td ((Element -> f Element) -> Element -> f Element)
-> ((Element -> f Element) -> Element -> f Element)
-> (Element -> f Element)
-> Element
-> f Element
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Name -> Traversal' Element Element
withoutAttribute Name
"class"

tags :: Traversal' Element Text
tags :: (Text -> f Text) -> Element -> f Element
tags = (Element -> f Element) -> Element -> f Element
Traversal' Element Element
td ((Element -> f Element) -> Element -> f Element)
-> ((Text -> f Text) -> Element -> f Element)
-> (Text -> f Text)
-> Element
-> f Element
forall k (f :: Type -> Type) c s t (p :: k -> Type -> Type)
       (a :: k) b.
(Applicative f, Plated c) =>
LensLike f s t c c -> Over p f c c a b -> Over p f s t a b
... (Element -> f Element) -> Element -> f Element
Traversal' Element Element
div ((Element -> f Element) -> Element -> f Element)
-> ((Text -> f Text) -> Element -> f Element)
-> (Text -> f Text)
-> Element
-> f Element
forall k (f :: Type -> Type) c s t (p :: k -> Type -> Type)
       (a :: k) b.
(Applicative f, Plated c) =>
LensLike f s t c c -> Over p f c c a b -> Over p f s t a b
... (Element -> f Element) -> Element -> f Element
Traversal' Element Element
a ((Element -> f Element) -> Element -> f Element)
-> ((Text -> f Text) -> Element -> f Element)
-> (Text -> f Text)
-> Element
-> f Element
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Node -> f Node) -> Element -> f Element
Traversal' Element Node
lower ((Node -> f Node) -> Element -> f Element)
-> ((Text -> f Text) -> Node -> f Node)
-> (Text -> f Text)
-> Element
-> f Element
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Text -> f Text) -> Node -> f Node
Prism' Node Text
_Content

archiverLink :: Traversal' Element PopUpLink
archiverLink :: (PopUpLink -> f PopUpLink) -> Element -> f Element
archiverLink = (Element -> f Element) -> Element -> f Element
Traversal' Element Element
mainMetaR ((Element -> f Element) -> Element -> f Element)
-> ((PopUpLink -> f PopUpLink) -> Element -> f Element)
-> (PopUpLink -> f PopUpLink)
-> Element
-> f Element
forall k (f :: Type -> Type) c s t (p :: k -> Type -> Type)
       (a :: k) b.
(Applicative f, Plated c) =>
LensLike f s t c c -> Over p f c c a b -> Over p f s t a b
... Text -> Traversal' Element Element
cl Text
"g2 gsp" ((Element -> f Element) -> Element -> f Element)
-> ((PopUpLink -> f PopUpLink) -> Element -> f Element)
-> (PopUpLink -> f PopUpLink)
-> Element
-> f Element
forall k (f :: Type -> Type) c s t (p :: k -> Type -> Type)
       (a :: k) b.
(Applicative f, Plated c) =>
LensLike f s t c c -> Over p f c c a b -> Over p f s t a b
... Name -> Traversal' Element Text
attr Name
"onclick" ((Text -> f Text) -> Element -> f Element)
-> ((PopUpLink -> f PopUpLink) -> Text -> f Text)
-> (PopUpLink -> f PopUpLink)
-> Element
-> f Element
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (PopUpLink -> f PopUpLink) -> Text -> f Text
Prism' Text PopUpLink
_PopUpLink

torrentLink :: Traversal' Element PopUpLink
torrentLink :: (PopUpLink -> f PopUpLink) -> Element -> f Element
torrentLink = (Element -> f Element) -> Element -> f Element
Traversal' Element Element
mainMetaR ((Element -> f Element) -> Element -> f Element)
-> ((PopUpLink -> f PopUpLink) -> Element -> f Element)
-> (PopUpLink -> f PopUpLink)
-> Element
-> f Element
forall k (f :: Type -> Type) c s t (p :: k -> Type -> Type)
       (a :: k) b.
(Applicative f, Plated c) =>
LensLike f s t c c -> Over p f c c a b -> Over p f s t a b
... Text -> Traversal' Element Element
cl Text
"g2" ((Element -> f Element) -> Element -> f Element)
-> ((PopUpLink -> f PopUpLink) -> Element -> f Element)
-> (PopUpLink -> f PopUpLink)
-> Element
-> f Element
forall k (f :: Type -> Type) c s t (p :: k -> Type -> Type)
       (a :: k) b.
(Applicative f, Plated c) =>
LensLike f s t c c -> Over p f c c a b -> Over p f s t a b
... Name -> Traversal' Element Text
attr Name
"onclick" ((Text -> f Text) -> Element -> f Element)
-> ((PopUpLink -> f PopUpLink) -> Text -> f Text)
-> (PopUpLink -> f PopUpLink)
-> Element
-> f Element
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (PopUpLink -> f PopUpLink) -> Text -> f Text
Prism' Text PopUpLink
_PopUpLink

imagePages :: Traversal' Element Text
imagePages :: (Text -> f Text) -> Element -> f Element
imagePages = (Element -> f Element) -> Element -> f Element
Traversal' Element Element
div ((Element -> f Element) -> Element -> f Element)
-> ((Text -> f Text) -> Element -> f Element)
-> (Text -> f Text)
-> Element
-> f Element
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> Traversal' Element Element
id Text
"gdt" ((Element -> f Element) -> Element -> f Element)
-> ((Text -> f Text) -> Element -> f Element)
-> (Text -> f Text)
-> Element
-> f Element
forall k (f :: Type -> Type) c s t (p :: k -> Type -> Type)
       (a :: k) b.
(Applicative f, Plated c) =>
LensLike f s t c c -> Over p f c c a b -> Over p f s t a b
... Text -> Traversal' Element Element
cl Text
"gdtl" ((Element -> f Element) -> Element -> f Element)
-> ((Text -> f Text) -> Element -> f Element)
-> (Text -> f Text)
-> Element
-> f Element
forall k (f :: Type -> Type) c s t (p :: k -> Type -> Type)
       (a :: k) b.
(Applicative f, Plated c) =>
LensLike f s t c c -> Over p f c c a b -> Over p f s t a b
... (Element -> f Element) -> Element -> f Element
Traversal' Element Element
a ((Element -> f Element) -> Element -> f Element)
-> ((Text -> f Text) -> Element -> f Element)
-> (Text -> f Text)
-> Element
-> f Element
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Name -> Traversal' Element Text
attr Name
"href"

newer :: Traversal' Element Gallery
newer :: (Gallery -> f Gallery) -> Element -> f Element
newer = (Element -> f Element) -> Element -> f Element
Traversal' Element Element
div ((Element -> f Element) -> Element -> f Element)
-> ((Gallery -> f Gallery) -> Element -> f Element)
-> (Gallery -> f Gallery)
-> Element
-> f Element
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> Traversal' Element Element
id Text
"gnd" ((Element -> f Element) -> Element -> f Element)
-> ((Gallery -> f Gallery) -> Element -> f Element)
-> (Gallery -> f Gallery)
-> Element
-> f Element
forall k (f :: Type -> Type) c s t (p :: k -> Type -> Type)
       (a :: k) b.
(Applicative f, Plated c) =>
LensLike f s t c c -> Over p f c c a b -> Over p f s t a b
... (Element -> f Element) -> Element -> f Element
Traversal' Element Element
a ((Element -> f Element) -> Element -> f Element)
-> ((Gallery -> f Gallery) -> Element -> f Element)
-> (Gallery -> f Gallery)
-> Element
-> f Element
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Name -> Traversal' Element Text
attr Name
"href" ((Text -> f Text) -> Element -> f Element)
-> ((Gallery -> f Gallery) -> Text -> f Text)
-> (Gallery -> f Gallery)
-> Element
-> f Element
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Gallery -> f Gallery) -> Text -> f Text
Prism' Text Gallery
_GalleryLink