module Music.Theory.IO where
import qualified Data.ByteString as B
import qualified Data.Text as T
import qualified Data.Text.Encoding as T
import qualified Data.Text.IO as T
import qualified System.Directory as D
read_file_utf8_text :: FilePath -> IO T.Text
read_file_utf8_text = fmap T.decodeUtf8 . B.readFile
read_file_utf8 :: FilePath -> IO String
read_file_utf8 = fmap T.unpack . read_file_utf8_text
read_file_utf8_or :: String -> FilePath -> IO String
read_file_utf8_or def f = do
x <- D.doesFileExist f
if x then read_file_utf8 f else return def
write_file_utf8 :: FilePath -> String -> IO ()
write_file_utf8 fn = B.writeFile fn . T.encodeUtf8 . T.pack
read_file_iso_8859_1 :: FilePath -> IO String
read_file_iso_8859_1 = fmap (T.unpack . T.decodeLatin1) . B.readFile
read_file_locale :: FilePath -> IO String
read_file_locale = fmap T.unpack . T.readFile