{- This file is part of the Haskell package playlists. It is subject to the license terms in the LICENSE file found in the top-level directory of this distribution and at git://pmade.com/playlists/LICENSE. No part of playlists package, including this file, may be copied, modified, propagated, or distributed except according to the terms contained in the LICENSE file. -} -------------------------------------------------------------------------------- module Text.Playlist.Internal.Format ( fileNameToFormat , appendExtension ) where -------------------------------------------------------------------------------- import Data.Char (toLower) import System.FilePath (takeExtension) -------------------------------------------------------------------------------- import Text.Playlist.Types -------------------------------------------------------------------------------- -- | Try to figure out a file's format from it's file extension. -- -- >>> fileNameToFormat "foo.m3u" -- Just M3U -- -- >>> fileNameToFormat "foo.M3U" -- Just M3U -- -- >>> fileNameToFormat "foo.txt" -- Nothing fileNameToFormat :: FilePath -> Maybe Format fileNameToFormat ext = case map toLower $ takeExtension ext of ".m3u" -> Just M3U ".m3u8" -> Just M3U ".pls" -> Just PLS _ -> Nothing -------------------------------------------------------------------------------- -- | Given a file name that does not have a file extension, return a -- file name with the appropriate extension included based on the -- given format. -- -- >>> appendExtension M3U "foo" -- "foo.m3u" appendExtension :: Format -> FilePath -> FilePath appendExtension M3U = (++ ".m3u") appendExtension PLS = (++ ".pls")