module Model (Slot, Line, 
              isJunk, isDate, isTime, isBlankTime, 
              mkJunk,
              mkDates,
              mkTime,
              month, day,
              timeHeader, hours) where

-- MITSFS iPhone schedule pretty-printer
-- Copyright (C) 2008 Brian Sniffen

-- This program is free software; you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation; either version 2 of the License, or
-- (at your option) any later version.

-- This program is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-- GNU General Public License for more details.

-- You should have received a copy of the GNU General Public License along
-- with this program; if not, write to the Free Software Foundation, Inc.,
-- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

type Slot = Maybe String

data Line = Junk
          | Dates Int Int -- Month, Day
          | Time Int Slot Slot Slot Slot Slot Slot Slot
            deriving (Read, Show)

isJunk Junk = True
isJunk _ = False

isDate (Dates _ _) = True
isDate _ = False

isTime (Time _ _ _ _ _ _ _ _) = True
isTime _ = False

isBlankTime (Time _ Nothing Nothing Nothing Nothing Nothing Nothing Nothing) = True
isBlankTime _ = False

mkJunk = Junk
mkDates m d = Dates m d
mkTime header ts@[sun,mon,tue,wed,thu,fri,sat] = 
    Time header sun mon tue wed thu fri sat

month (Dates m _) = m

day (Dates _ d) = d

timeHeader (Time h _ _ _ _ _ _ _) = h

hours (Time _ sun mon tue wed thu fri sat) = 
    [sun, mon, tue, wed, thu, fri, sat]