-- |
-- Module: Web.WikiCFP.Scraper.Type
-- Description: data types for WikiCFP scraper
-- Maintainer: Toshio Ito <debug.ito@gmail.com>
--
--
module Web.WikiCFP.Scraper.Type
    ( When (..)
    , Event (..)
    ) where

import           Data.Text (Text)
import           Data.Time (Day)

-- | Period of dates (inclusive).
data When
  = When
      { When -> Day
whenFrom :: !Day
      , When -> Day
whenTo   :: !Day
      }
  deriving (When -> When -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: When -> When -> Bool
$c/= :: When -> When -> Bool
== :: When -> When -> Bool
$c== :: When -> When -> Bool
Eq, Eq When
When -> When -> Bool
When -> When -> Ordering
When -> When -> When
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
min :: When -> When -> When
$cmin :: When -> When -> When
max :: When -> When -> When
$cmax :: When -> When -> When
>= :: When -> When -> Bool
$c>= :: When -> When -> Bool
> :: When -> When -> Bool
$c> :: When -> When -> Bool
<= :: When -> When -> Bool
$c<= :: When -> When -> Bool
< :: When -> When -> Bool
$c< :: When -> When -> Bool
compare :: When -> When -> Ordering
$ccompare :: When -> When -> Ordering
Ord, Int -> When -> ShowS
[When] -> ShowS
When -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [When] -> ShowS
$cshowList :: [When] -> ShowS
show :: When -> String
$cshow :: When -> String
showsPrec :: Int -> When -> ShowS
$cshowsPrec :: Int -> When -> ShowS
Show)

-- | A conference event posted to WikiCFP site. It corresponds to a
-- row in the table you see conference pages etc, for example,
-- <http://wikicfp.com/cfp/program?id=1172>
data Event
  = Event
      { Event -> Text
eventShortName :: !Text
      , Event -> Text
eventURL       :: !Text
        -- ^ URL to the WikiCFP page of this event.
      , Event -> Text
eventLongName  :: !Text
      , Event -> Maybe When
eventWhen      :: !(Maybe When)
      , Event -> Maybe Text
eventWhere     :: !(Maybe Text)
      , Event -> [Day]
eventDeadlines :: ![Day]
        -- ^ deadlines are in an ascending order, i.e.,
        -- the earliest deadline is the head.
      }
  deriving (Event -> Event -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Event -> Event -> Bool
$c/= :: Event -> Event -> Bool
== :: Event -> Event -> Bool
$c== :: Event -> Event -> Bool
Eq, Eq Event
Event -> Event -> Bool
Event -> Event -> Ordering
Event -> Event -> Event
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
min :: Event -> Event -> Event
$cmin :: Event -> Event -> Event
max :: Event -> Event -> Event
$cmax :: Event -> Event -> Event
>= :: Event -> Event -> Bool
$c>= :: Event -> Event -> Bool
> :: Event -> Event -> Bool
$c> :: Event -> Event -> Bool
<= :: Event -> Event -> Bool
$c<= :: Event -> Event -> Bool
< :: Event -> Event -> Bool
$c< :: Event -> Event -> Bool
compare :: Event -> Event -> Ordering
$ccompare :: Event -> Event -> Ordering
Ord, Int -> Event -> ShowS
[Event] -> ShowS
Event -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Event] -> ShowS
$cshowList :: [Event] -> ShowS
show :: Event -> String
$cshow :: Event -> String
showsPrec :: Int -> Event -> ShowS
$cshowsPrec :: Int -> Event -> ShowS
Show)