Changeset 4914 for src/Pugs/Prim/Eval.hs
- Timestamp:
- 06/22/05 20:57:31 (4 years ago)
- svk:copy_cache_prev:
- 6641
- Files:
-
- 1 modified
-
src/Pugs/Prim/Eval.hs (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/Pugs/Prim/Eval.hs
r4790 r4914 2 2 -- used by Pugs.Prim 3 3 op1EvalHaskell, 4 opEval, opEval file,5 opRequire, 4 opEval, opEvalFile, 5 opRequire, requireInc, 6 6 EvalError(..), EvalResult(..), EvalStyle(..), 7 7 -- used by Pugs.Eval -- needs factored somewhere bettwen … … 28 28 opRequire :: Bool -> Val -> Eval Val 29 29 opRequire dumpEnv v = do 30 file <- fromVal v 31 incs <- fromVal =<< readVar "@*INC" 32 requireInc incs file (errMsg file incs) 30 file <- fromVal v 31 incs <- fromVal =<< readVar "@*INC" 32 pathName <- requireInc incs file (errMsg file incs) 33 -- %*INC{file} = pathname 34 evalExp $ Syn "=" 35 [ Syn "{}" 36 [ Var "%*INC", Val . VStr $ decodeUTF8 file ] 37 , Val . VStr $ decodeUTF8 pathName 38 ] 39 str <- liftIO $ readFile pathName 40 opEval style pathName (decodeUTF8 str) 33 41 where 34 42 style = MkEvalStyle … … 37 45 else EvalResultLastValue)} 38 46 errMsg file incs = "Can't locate " ++ file ++ " in @*INC (@*INC contains: " ++ unwords incs ++ ")." 39 requireInc [] _ msg = fail msg40 requireInc (p:ps) file msg = do41 let pathName = p ++ "/" ++ file42 ok <- liftIO $ doesFileExist pathName43 if (not ok)44 then requireInc ps file msg45 else do46 -- %*INC{file} = pathname47 evalExp $48 Syn "=" [ Syn "{}" [ Var "%*INC", Val . VStr $ decodeUTF8 file ]49 , Val . VStr $ decodeUTF8 pathName50 ]51 str <- liftIO $ readFile pathName52 opEval style pathName (decodeUTF8 str)53 47 54 opEvalfile :: String -> Eval Val 55 opEvalfile filename = do 48 requireInc :: (MonadIO m) => [FilePath] -> FilePath -> String -> m String 49 requireInc [] _ msg = fail msg 50 requireInc (p:ps) file msg = do 51 let pathName = p ++ "/" ++ file 52 ok <- liftIO $ doesFileExist pathName 53 if (not ok) 54 then requireInc ps file msg 55 else return pathName 56 57 opEvalFile :: String -> Eval Val 58 opEvalFile filename = do 56 59 ok <- liftIO $ doesFileExist filename 57 60 if (not ok)
