Changeset 2992 for src/Pugs/Prim/Match.hs
- Timestamp:
- 05/12/05 03:47:09 (4 years ago)
- svk:copy_cache_prev:
- 4536
- Files:
-
- 1 modified
-
src/Pugs/Prim/Match.hs (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
src/Pugs/Prim/Match.hs
r2957 r2992 43 43 return mkMatchFail 44 44 45 doMatch cs MkRulePCRE{ rxRegex = re } = do46 rv <- liftIO $ PCRE.execute re cs UTF8045 doMatch csChars MkRulePCRE{ rxRegex = re } = do 46 rv <- liftIO $ PCRE.execute re csBytes 0 47 47 if isNothing rv then return mkMatchFail else do 48 48 let ((fromBytes, lenBytes):subs) = Array.elems (fromJust rv) 49 substr from len = genericTake len (genericDrop from cs) -- in bytes 50 subsMatch = [ VMatch $ mkMatchOk f (f + t) (substr f t) [] Map.empty | (f, t) <- subs ] 49 substr str from len = genericTake len (genericDrop from str) 50 subsMatch = [ 51 VMatch $ mkMatchOk 52 fChars (fChars + lChars) 53 (substr csChars fChars lChars) 54 [] Map.empty 55 | (fBytes, lBytes) <- subs 56 , let fChars = chars $ genericTake fBytes csBytes 57 , let lChars = chars $ substr csBytes fBytes lBytes 58 ] 59 fromChars = chars $ genericTake fromBytes csBytes 60 lenChars = chars $ substr csBytes fromBytes lenBytes 61 chars = genericLength . decodeUTF8 51 62 52 leftmatch = decodeUTF8 $ genericTake fromBytes csUTF8 53 fromChars = genericLength leftmatch 54 lenChars = genericLength $ decodeUTF8 $ (substr fromBytes lenBytes) 55 56 return $ mkMatchOk fromChars (fromChars + lenChars) (substr fromBytes lenBytes) subsMatch Map.empty 63 return $ mkMatchOk fromChars (fromChars + lenChars) (substr csChars fromChars lenChars) subsMatch Map.empty 57 64 where 58 cs UTF8 = encodeUTF8 cs65 csBytes = encodeUTF8 csChars 59 66 60 67 matchFromMR mr = VMatch $ mkMatchOk 0 0 (decodeUTF8 all) subsMatch Map.empty
