-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | A generator of comics based on some ascertainable data about the requester.
--
-- This package was writen to power xkcd's 2012 April Fools comic
-- Umwelt. It uses several datasets and a script to generate a
-- customized story specific to the user viewing it.
@package waldo
@version 0
module Waldo.Stalk
data OS
BSD :: OS
Linux :: OS
Windows :: OS
Mac :: OS
data Browser
Chrome :: Browser
Safari :: Browser
FireFox :: Browser
InternetExplorer :: Browser
Opera :: Browser
Netscape :: Browser
data NetSpeed
Dialup :: NetSpeed
Cellular :: NetSpeed
CableDSL :: NetSpeed
Corporate :: NetSpeed
data PersonalData
PersonalData :: [ByteString] -> Maybe ByteString -> Maybe ByteString -> Maybe NetSpeed -> Maybe ByteString -> Maybe URI -> Maybe Browser -> Maybe OS -> Maybe Coord -> (Int, Int) -> Maybe BrowserEntry -> StalkRequest -> PersonalData
[pdLocal] :: PersonalData -> [ByteString]
[pdOrg] :: PersonalData -> Maybe ByteString
[pdISP] :: PersonalData -> Maybe ByteString
[pdNetSpeed] :: PersonalData -> Maybe NetSpeed
[pdReferer] :: PersonalData -> Maybe ByteString
[pdRefURI] :: PersonalData -> Maybe URI
[pdBrowser] :: PersonalData -> Maybe Browser
[pdOS] :: PersonalData -> Maybe OS
[pdLatLon] :: PersonalData -> Maybe Coord
[pdScreen] :: PersonalData -> (Int, Int)
[pdBrowserEntry] :: PersonalData -> Maybe BrowserEntry
[pdStalk] :: PersonalData -> StalkRequest
data StalkRequest
wai2stalk :: Request -> StalkRequest
data StalkDB
loadStalkDB :: FilePath -> IO StalkDB
stalk :: StalkDB -> StalkRequest -> IO PersonalData
instance GHC.Show.Show Waldo.Stalk.PersonalData
instance GHC.Classes.Eq Waldo.Stalk.PersonalData
instance GHC.Show.Show Waldo.Stalk.StalkRequest
instance GHC.Classes.Ord Waldo.Stalk.StalkRequest
instance GHC.Classes.Eq Waldo.Stalk.StalkRequest
instance GHC.Show.Show Waldo.Stalk.NetSpeed
instance GHC.Classes.Ord Waldo.Stalk.NetSpeed
instance GHC.Classes.Eq Waldo.Stalk.NetSpeed
instance GHC.Show.Show Waldo.Stalk.OS
instance GHC.Classes.Ord Waldo.Stalk.OS
instance GHC.Classes.Eq Waldo.Stalk.OS
instance GHC.Show.Show Waldo.Stalk.Browser
instance GHC.Classes.Ord Waldo.Stalk.Browser
instance GHC.Classes.Eq Waldo.Stalk.Browser
instance Data.Aeson.Types.ToJSON.ToJSON Waldo.Stalk.StalkRequest
instance Data.Aeson.Types.FromJSON.FromJSON Waldo.Stalk.StalkRequest
module Waldo.Script
data Script
ScriptTo :: !Text -> Script
[sTarget] :: Script -> !Text
Script :: !Int -> !Int -> !Text -> [Panel] -> !Text -> Script
[sWidth] :: Script -> !Int
[sHeight] :: Script -> !Int
[sAltText] :: Script -> !Text
[sPanels] :: Script -> [Panel]
[sName] :: Script -> !Text
type PanelSizes = [PanelData]
data PanelData
PanelData :: !Int -> !Int -> [ImagePart] -> [TextPart] -> !Text -> PanelData
[pdWidth] :: PanelData -> !Int
[pdHeight] :: PanelData -> !Int
[pdImages] :: PanelData -> [ImagePart]
[pdText] :: PanelData -> [TextPart]
[pdName] :: PanelData -> !Text
data Panel
Panel :: !Pos -> !Int -> !Int -> [ImagePart] -> [TextPart] -> !Text -> Panel
[pPos] :: Panel -> !Pos
[pWidth] :: Panel -> !Int
[pHeight] :: Panel -> !Int
[pImages] :: Panel -> [ImagePart]
[pText] :: Panel -> [TextPart]
[pName] :: Panel -> !Text
data ImagePart
ImagePart :: !Pos -> !Text -> ImagePart
[ipPos] :: ImagePart -> !Pos
[ipImageUrl] :: ImagePart -> !Text
data TextPart
TextPart :: !Pos -> !Text -> !Float -> !Text -> !Float -> TextPart
[tpPos] :: TextPart -> !Pos
[tpString] :: TextPart -> !Text
[tpSize] :: TextPart -> !Float
[tpFont] :: TextPart -> !Text
[tpAngle] :: TextPart -> !Float
data Pos
Pos :: !Int -> !Int -> Pos
[pX] :: Pos -> !Int
[pY] :: Pos -> !Int
loadImagePanels :: Int -> Int -> Int -> ReaderT FilePath IO PanelSizes
mkScript :: Text -> Text -> [PanelData] -> Script
scriptName :: Script -> Text
instance GHC.Show.Show Waldo.Script.Script
instance GHC.Classes.Ord Waldo.Script.Script
instance GHC.Classes.Eq Waldo.Script.Script
instance GHC.Show.Show Waldo.Script.Panel
instance GHC.Classes.Ord Waldo.Script.Panel
instance GHC.Classes.Eq Waldo.Script.Panel
instance GHC.Show.Show Waldo.Script.PanelData
instance GHC.Classes.Ord Waldo.Script.PanelData
instance GHC.Classes.Eq Waldo.Script.PanelData
instance GHC.Show.Show Waldo.Script.ImagePart
instance GHC.Classes.Ord Waldo.Script.ImagePart
instance GHC.Classes.Eq Waldo.Script.ImagePart
instance GHC.Show.Show Waldo.Script.TextPart
instance GHC.Classes.Ord Waldo.Script.TextPart
instance GHC.Classes.Eq Waldo.Script.TextPart
instance GHC.Show.Show Waldo.Script.Pos
instance GHC.Classes.Ord Waldo.Script.Pos
instance GHC.Classes.Eq Waldo.Script.Pos
instance Control.DeepSeq.NFData Waldo.Script.Script
instance Control.DeepSeq.NFData Waldo.Script.Panel
instance Control.DeepSeq.NFData Waldo.Script.ImagePart
instance Control.DeepSeq.NFData Waldo.Script.TextPart
instance Control.DeepSeq.NFData Waldo.Script.Pos
instance Data.Aeson.Types.ToJSON.ToJSON Waldo.Script.Script
instance Data.Aeson.Types.ToJSON.ToJSON Waldo.Script.Panel
instance Data.Aeson.Types.ToJSON.ToJSON Waldo.Script.ImagePart
instance Data.Aeson.Types.ToJSON.ToJSON Waldo.Script.TextPart
instance Data.Aeson.Types.ToJSON.ToJSON Waldo.Script.Pos
module Waldo.Story
selectStory :: ((Int, Int) -> Story -> Maybe Script) -> Script -> [StoryOption] -> PersonalData -> IO Script
knapsackSizer :: Int -> (Int, Int) -> Story -> Maybe Script
data Story
StoryGoto :: Text -> Story
[storyGoto] :: Story -> Text
Story :: Text -> [PanelSizes] -> Int -> Int -> Text -> Story
[storyAltText] :: Story -> Text
[storyPanelSets] :: Story -> [PanelSizes]
[storyPadX] :: Story -> Int
[storyPadY] :: Story -> Int
[storyName] :: Story -> Text
type StoryGuard = ReaderT PersonalData Maybe ()
type StoryOption = ReaderT PersonalData Maybe Story
isIn :: ByteString -> StoryGuard
browserIs :: Browser -> StoryGuard
osIs :: OS -> StoryGuard
netSpeedIs :: NetSpeed -> StoryGuard
orgIs :: ByteString -> StoryGuard
orgMatch :: ByteString -> StoryGuard
ispIs :: ByteString -> StoryGuard
refererDomainIs :: String -> StoryGuard
pdTestJustIs :: Eq a => (PersonalData -> Maybe a) -> a -> StoryGuard
giveThem :: MonadPlus m => m () -> m a -> m a
allocate :: MonadPlus m => m () -> a -> m a
instance GHC.Show.Show Waldo.Story.Story
module Waldo.Waldo
data WaldoData
WaldoData :: StalkDB -> HashMap Text (PersonalData -> IO Script) -> WaldoData
[wdStalkDB] :: WaldoData -> StalkDB
[wdGenScript] :: WaldoData -> HashMap Text (PersonalData -> IO Script)
loadWaldo :: FilePath -> [(Text, IO (PersonalData -> IO Script))] -> IO WaldoData
module Waldo.Server
waldoApp :: WaldoData -> Application
module Waldo.CityLoc
data CityData
CityData :: Coord -> Double -> CityData
[cityLoc] :: CityData -> Coord
[cityInfluenceKm] :: CityData -> Double
mkCity :: Coord -> Double -> CityData
closeTo :: CityData -> StoryGuard
atlanta :: CityData
belfast :: CityData
boston :: CityData
brisbane :: CityData
cambridge :: CityData
chicago :: CityData
christchurch :: CityData
cnu :: CityData
dallas :: CityData
detroit :: CityData
downtownNYC :: CityData
greenBay :: CityData
halifax :: CityData
houston :: CityData
jerusalem :: CityData
lakeChamplain :: CityData
lakeErie :: CityData
lakeMead :: CityData
lakeMichigan :: CityData
lasVegas :: CityData
london :: CityData
losAngeles :: CityData
melbourne :: CityData
miami :: CityData
montreal :: CityData
nyc :: CityData
ottawa :: CityData
paris :: CityData
philadelphia :: CityData
richmond :: CityData
rioDeJaneiro :: CityData
riverside :: CityData
sacramento :: CityData
sanAntonio :: CityData
sanDiego :: CityData
sanFran :: CityData
scotland :: CityData
seattle :: CityData
sendai :: CityData
sydney :: CityData
tampa :: CityData
telAviv :: CityData
tokyo :: CityData
toronto :: CityData
vaBeach :: CityData
module Waldo.StoryExample
loadScriptGen :: IO (PersonalData -> IO Script)