packages feed

pgdl-7.0: src/SortVid.hs

{-# LANGUAGE OverloadedStrings #-}

module SortVid (sortVid) where

import Video

import qualified Data.Text as T
import Data.List
import Data.Function

sortVid :: [Video] -> [Video]
sortVid = sortBy (cmpDate `on` vidDate)

cmpDate :: T.Text -> T.Text -> Ordering
cmpDate = flip compare `on` prs
    where prs tx = [year, tranMon mon, day, time] 
            where [day, mon, year, time] = concat . map (T.splitOn "-") . (T.splitOn " ") $ tx
          
tranMon :: T.Text -> T.Text
tranMon m = case m of
    "Jan" -> "A"
    "Feb" -> "B"
    "Mar" -> "C"
    "Apr" -> "D"
    "May" -> "E"
    "Jun" -> "F"
    "Jul" -> "G"
    "Aug" -> "H"
    "Sep" -> "I"
    "Oct" -> "J"
    "Nov" -> "K"
    "Dec" -> "L"