module Imm.Util where
import Imm.Types
import Codec.Binary.UTF8.String
import Data.Maybe
import Data.Time
import Data.Time.RFC2822
import Data.Time.RFC3339
import System.Directory
import System.Environment.XDG.BaseDir
resolve :: (RefDirs -> a) -> IO a
resolve f = do
homeDir <- getHomeDirectory
tmpDir <- getTemporaryDirectory
configDir <- getUserConfigDir "hbro"
dataDir <- getUserDataDir "hbro"
return . f $ RefDirs homeDir tmpDir configDir dataDir
escapeFileName :: Char -> String
escapeFileName '/' = "|"
escapeFileName x = x:[]
parseDate :: String -> Maybe UTCTime
parseDate date = listToMaybe . map zonedTimeToUTC . catMaybes . map ((flip ($)) date) $ [readRFC2822, readRFC3339]
decodeIfNeeded :: String -> String
decodeIfNeeded text = case isUTF8Encoded text of
False -> text
_ -> decodeString text