imm-0.1.1.0: Imm/Util.hs
module Imm.Util where
-- {{{ Imports
import Imm.Types
import Codec.Binary.UTF8.String
import Data.Maybe
import Data.Time
import Data.Time.RFC2822
import Data.Time.RFC3339
--import Network.URI
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