module TH.API (generateAPIs) where import Prelude import Control.Monad (mzero, join, forM) import Control.Applicative ((<$>)) import Language.Haskell.TH.Syntax (Q, qRunIO) import System.FilePath (takeBaseName) import Helper.File import Data.TH.API import TH.API.Input import TH.API.Output generateAPIs :: FilePath -> Q [API] generateAPIs folder = do files <- qRunIO $ findAPIs folder join <$> (forM (take 1000 files) $ \file@(xml, json) -> do let fname = takeBaseName xml mAPI <- qRunIO $ loadAPI file case mAPI of Just (opentable, schema) -> do input <- generateInput xml opentable output <- generateOutput json schema let api = API fname input output return [api] _ -> do qRunIO . print $ "Can't load " ++ fname return mzero)