packages feed

mathgenealogy-0.0.1: Entry.hs

-----------------------------------------------------------------------------
-- |
-- 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 ""