From 0755a7d9a4ba807d3a5d47ac84224bd146882a08 Mon Sep 17 00:00:00 2001
From: simonm <unknown>
Date: Mon, 26 Apr 1999 15:19:28 +0000
Subject: [PATCH] [project @ 1999-04-26 15:19:28 by simonm] Add simple
 high-level interface to Regex (snaffled from my nofib log analyser).

---
 ghc/lib/misc/RegexString.lhs | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)
 create mode 100644 ghc/lib/misc/RegexString.lhs

diff --git a/ghc/lib/misc/RegexString.lhs b/ghc/lib/misc/RegexString.lhs
new file mode 100644
index 000000000000..8bc98a5a02c9
--- /dev/null
+++ b/ghc/lib/misc/RegexString.lhs
@@ -0,0 +1,34 @@
+-----------------------------------------------------------------------------
+RegexString.lhs
+
+A simple high-level interface to Regex
+
+(c) Simon Marlow 1997
+-----------------------------------------------------------------------------
+
+> module RegexString (Regex(..), mkRegex, matchRegex) where
+
+> import Regex
+> import PackedString
+> import Array
+> import GlaExts
+
+> type Regex = PatBuffer
+> 
+> mkRegex :: String -> Regex
+> mkRegex s = unsafePerformPrimIO (
+> 	  re_compile_pattern (packString s) False False)
+> 
+> matchRegex :: Regex -> String -> Maybe [String]
+> matchRegex p s = unsafePerformPrimIO (
+> 	  re_match p str 0 True >>= \m ->
+> 	  case m of
+> 		  Nothing -> return Nothing
+> 		  Just m  -> return (Just (matches m str))
+> 	  )
+>    where
+>	  str = packString s
+> 
+> matches (REmatch arr _ _ _ _) s = 
+> 	  [ unpackPS (substrPS s beg (end-1)) | 
+> 		  index <- [1..], let (beg,end) = arr ! index ]
-- 
GitLab