[project @ 1996-01-08 20:28:12 by partain]
[ghc-hetmet.git] / ghc / runtime / regex / test.hs
1 import LibMatchPS
2
3 _tailPS' x
4  = if _nullPS x then
5      error "_tailPS []"
6    else
7      _substrPS x 1 (_lengthPS x)
8
9 subst :: String
10       -> String
11       -> [Char]
12       -> String
13       -> String
14 subst rexp repl flags str 
15  = _unpackPS (substPS (_packString rexp)
16                       (_packString repl)
17                       flags
18                       (_packString str))
19                 
20
21 pickFirst :: String
22           -> String
23           -> String
24 pickFirst str substr
25  = let
26     str' = _packString str
27    in
28     case (findPS (_packString str) (_packString substr)) of
29         Nothing -> ""
30         Just x  -> _unpackPS (_dropPS x str')
31
32 pickLast :: String
33          -> String
34          -> String
35 pickLast str substr
36  = let
37     str' = _packString str
38    in
39     case (rfindPS (_packString str) (_packString substr)) of
40         Nothing -> ""
41         Just x  -> _unpackPS (_dropPS x str')
42
43 main 
44  = getArgs  >>= \ (pattern:replacement:stuff:xs) ->
45    let
46     flags
47      = case xs of
48         [] -> []
49         (x:xs) -> x
50    in
51     (case stuff of
52       (':':xs) ->
53              openFile xs ReadMode  >>= \ hndl ->
54              hGetContents hndl
55       _ -> return stuff) >>= \ stuff' ->
56     putStr (subst pattern replacement flags stuff') >>
57     putStr "\n"
58