buffet-0.2.0: src/Buffet/Parse/ParseMenu.hs
module Buffet.Parse.ParseMenu
( get
) where
import qualified Buffet.Parse.Menu as Menu
import qualified Buffet.Parse.ParseMenuFromFile as ParseMenuFromFile
import qualified Buffet.Parse.ParseMenuFromFolder as ParseMenuFromFolder
import qualified Control.Exception as Exception
import Prelude (FilePath, IO, Show, ($), (<>), show)
import qualified System.Directory as Directory
newtype Exception =
Exception FilePath
instance Show Exception where
show (Exception path) = "No such menu file or folder: " <> path
instance Exception.Exception Exception
get :: FilePath -> IO Menu.Menu
get menu = do
isAvailable <- Directory.doesPathExist menu
if isAvailable
then do
isFolder <- Directory.doesDirectoryExist menu
if isFolder
then ParseMenuFromFolder.get menu
else ParseMenuFromFile.get menu
else Exception.throwIO $ Exception menu