diff options
Diffstat (limited to 'ghc/runtime/regex/test.hs')
-rw-r--r-- | ghc/runtime/regex/test.hs | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/ghc/runtime/regex/test.hs b/ghc/runtime/regex/test.hs new file mode 100644 index 0000000000..962d32050c --- /dev/null +++ b/ghc/runtime/regex/test.hs @@ -0,0 +1,58 @@ +import LibMatchPS + +_tailPS' x + = if _nullPS x then + error "_tailPS []" + else + _substrPS x 1 (_lengthPS x) + +subst :: String + -> String + -> [Char] + -> String + -> String +subst rexp repl flags str + = _unpackPS (substPS (_packString rexp) + (_packString repl) + flags + (_packString str)) + + +pickFirst :: String + -> String + -> String +pickFirst str substr + = let + str' = _packString str + in + case (findPS (_packString str) (_packString substr)) of + Nothing -> "" + Just x -> _unpackPS (_dropPS x str') + +pickLast :: String + -> String + -> String +pickLast str substr + = let + str' = _packString str + in + case (rfindPS (_packString str) (_packString substr)) of + Nothing -> "" + Just x -> _unpackPS (_dropPS x str') + +main + = getArgs >>= \ (pattern:replacement:stuff:xs) -> + let + flags + = case xs of + [] -> [] + (x:xs) -> x + in + (case stuff of + (':':xs) -> + openFile xs ReadMode >>= \ hndl -> + hGetContents hndl + _ -> return stuff) >>= \ stuff' -> + putStr (subst pattern replacement flags stuff') >> + putStr "\n" + |