-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Scrape WikiCFP web site
--   
--   Scrape WikiCFP web site. See <a>Web.WikiCFP.Scraper</a>.
@package wikicfp-scraper
@version 0.1.0.9


-- | Synopsis:
--   
--   <pre>
--   import qualified Network.HTTP as H
--   import Web.WikiCFP.Scraper (scrapeSearchEvents)
--   
--   main :: IO ()
--   main =  do
--     res &lt;- H.getResponseBody =&lt;&lt; H.simpleHTTP (H.getRequest "http://wikicfp.com/cfp/servlet/tool.search?q=japan&amp;year=t")
--     print $ scrapeSearchEvents res
--   </pre>
--   
--   This module scrapes WikiCFP pages (<a>http://wikicfp.com/</a>) for
--   call-for-papers. It helps you stay up to date with deadlines of
--   academic paper submissions.
module Web.WikiCFP.Scraper

-- | Scrape a page of a conference, for example,
--   <a>http://wikicfp.com/cfp/program?id=2671</a>
scrapeConfEvents :: HTML input => input -> Either ErrorMsg [Event]

-- | Scrape a page of search results, for example,
--   <a>http://wikicfp.com/cfp/servlet/tool.search?q=cloud&amp;year=t</a>
scrapeSearchEvents :: HTML input => input -> Either ErrorMsg [Event]
type ErrorMsg = String

-- | Types of input HTML data to scrape.
class HTML a
decodeToText :: HTML a => a -> Either ErrorMsg Text

-- | Period of dates (inclusive).
data When
When :: !Day -> !Day -> When
[whenFrom] :: When -> !Day
[whenTo] :: When -> !Day

-- | A conference event posted to WikiCFP site. It corresponds to a row in
--   the table you see conference pages etc, for example,
--   <a>http://wikicfp.com/cfp/program?id=1172</a>
data Event
Event :: !Text -> !Text -> !Text -> !(Maybe When) -> !(Maybe Text) -> ![Day] -> Event
[eventShortName] :: Event -> !Text

-- | URL to the WikiCFP page of this event.
[eventURL] :: Event -> !Text
[eventLongName] :: Event -> !Text
[eventWhen] :: Event -> !(Maybe When)
[eventWhere] :: Event -> !(Maybe Text)

-- | deadlines are in an ascending order, i.e., the earliest deadline is
--   the head.
[eventDeadlines] :: Event -> ![Day]
instance Web.WikiCFP.Scraper.HTML Data.Text.Internal.Text
instance Web.WikiCFP.Scraper.HTML Data.Text.Internal.Lazy.Text
instance Web.WikiCFP.Scraper.HTML Data.ByteString.Internal.ByteString
instance Web.WikiCFP.Scraper.HTML Data.ByteString.Lazy.Internal.ByteString
instance Web.WikiCFP.Scraper.HTML GHC.Base.String
