-----------------------------------------------------------------------------
-- |
-- Module : Entry
-- Copyright : (C) Peter Robinson 2010-2012
-- License : GPL-2
--
-- Maintainer : Peter Robinson <thaldyron@gmail.com>
-- Stability : experimental
-- Portability : portable
--
-----------------------------------------------------------------------------
module Entry
where
import Data.Maybe
import Data.Text.Lazy(Text)
import qualified Data.Text.Lazy as T
data Entry = Entry
{ entryName :: Text
, entryGraduationInfo :: Maybe GraduationInfo
, entryAdvisors :: [(Text,Text)]
}
deriving(Ord,Eq)
urlAdvisors :: Entry -> [Text]
urlAdvisors = map (T.pack . (++) "http://genealogy.math.ndsu.nodak.edu/" . T.unpack . snd) . entryAdvisors
data GraduationInfo = GraduationInfo
{ gradDegree :: Maybe Text
, gradUniversity :: Maybe Text
, gradYear :: Maybe Text
, gradThesis :: Maybe Text
}
deriving(Ord,Eq)
instance Show Entry where
show e = T.unpack (entryName e)
++ maybeShow (entryGraduationInfo e)
where
maybeShow (Just g) = "\\n" ++ show g
maybeShow Nothing = ""
instance Show GraduationInfo where
show g = maybeShow (gradDegree g) " " ++ maybeShow (gradUniversity g) ", "
++ maybeShow (gradYear g) "\\n" ++ maybeShow (gradThesis g) ""
where
maybeShow gi s = if isJust gi then T.unpack (fromJust gi) ++ s else ""