packages feed

alms-0.4.9: src/Meta/FileString.hs

module Meta.FileString (
  fileString, fileStringCheck
) where

import Language.Haskell.TH

fileString :: String -> ExpQ
fileString  = fileStringCheck (const (return Nothing))

fileStringCheck :: (String -> IO (Maybe (Bool, String))) -> String -> ExpQ
fileStringCheck check file = do
  (str, chk) <- runIO $ do
    str <- readFile file
    chk <- check str
    return (str, chk)
  case chk of
    Nothing     -> return ()
    Just (b, s) -> report b s
  litE (stringL str)