chards/Cards.hs
2017-12-27 21:14:05 +00:00

74 lines
1.3 KiB
Haskell

module Cards
( Element
, Card
, Comment
, fromElement
, toElement
, isDue
, sides
, reset
, update
, showElement
, showElements
, parseElement
, parseElements
) where
import Data.List
import Data.Time
wee = EComment $ Comment "wee"
data Element = ECard Card | EComment Comment
deriving (Show)
data Comment = Comment String
deriving (Show)
type LastChecked = Integer
type Delay = Integer
data Card = Card Tier LastChecked Delay [String]
deriving (Show)
data Tier = Zero | One | Two | Three | Four | Five | Six | Seven | Eight | Nine | Ten
deriving (Show, Eq, Ord, Enum, Bounded)
{-
- Basic utility functions
-}
isCard :: Element -> Bool
isCard (ECard _) = True
isCard _ = False
fromElement :: Element -> Maybe Card
fromElement (ECard c) = Just c
fromElement _ = Nothing
toElement :: Card -> Element
toElement = ECard
isDue :: UTCTime -> Card -> Bool
isDue = undefined
sides :: Card -> [String]
sides (Card _ _ _ s) = s
reset :: Card -> Card
reset (Card t l d s) = Card minBound l d s
update :: UTCTime -> Card -> Card
update = undefined
showElements :: [Element] -> String
showElements = intercalate "\n\n" . map showElement
showElement :: Element -> String
showElement = undefined
{-
- Parsing
-}
parseElements = undefined
parseElement = undefined