----------------------------------------------------------------------------- -- | -- Module : Entry -- Copyright : (C) Peter Robinson 2010-2012 -- License : GPL-2 -- -- Maintainer : Peter Robinson -- 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 ""