hlatex-0.1: Language/LaTeX/Checker.hs
module Language.LaTeX.Checker where
import Data.Set (Set)
import qualified Data.Set as Set
import Data.Generics.Uniplate.Data (universeBi)
import Language.LaTeX.Types
providedPackages :: PreambleItm -> Set PackageName
providedPackages x = Set.fromList [ pkg | ProvidePackage pkg <- universeBi x ]
neededPackages :: Document -> Set PackageName
neededPackages x = Set.fromList [ pkg | PackageDependency pkg <- universeBi x ]
checkDocument :: Document -> Maybe ErrorMessage
checkDocument doc
| not . null $ missingPkgs = Just ("Missing packages: " ++ show missingPkgs)
| otherwise = Nothing
where providedPkgs = providedPackages . documentPreamble $ doc
neededPkgs = neededPackages doc
missingPkgs = map getPkgName . Set.toList $ neededPkgs `Set.difference` providedPkgs