module YesodDsl.Validation (validate) where

import YesodDsl.AST
import Data.List
import YesodDsl.Validation.Fields
import YesodDsl.Validation.Handlers
import qualified YesodDsl.Validation.State as V
import Data.Maybe

validate :: Module -> String
validate m = fieldErrors m  
           ++ handlerErrors m
           ++ missingModuleName 
           ++ (intercalate "\n" $ V.validate m)
    where 
          missingModuleName 
            | isNothing $ modName m = "Top-level module missing name"
            | otherwise = ""