regex 0.14.0.0 → 1.0.0.0
raw patch · 41 files changed
+1178/−552 lines, 41 filesdep −regex-pcre-builtinPVP ok
version bump matches the API change (PVP)
Dependencies removed: regex-pcre-builtin
API changes (from Hackage documentation)
- Text.RE: allMatches :: Matches a -> [Match a]
- Text.RE: anyMatches :: Matches a -> Bool
- Text.RE: class Replace s => IsRegex re s where makeRegex = makeRegexWith minBound makeSearchReplace = makeSearchReplaceWith minBound makeEscaped = makeEscapedWith minBound makeEscapedWith o f = makeRegexWith o . f . packR . escapeREString . unpackR
- Text.RE: countMatches :: Matches a -> Int
- Text.RE: data Match a
- Text.RE: data Matches a
- Text.RE: makeEscaped :: (IsRegex re s, Functor m, Monad m) => (s -> s) -> s -> m re
- Text.RE: makeEscapedWith :: (IsRegex re s, Functor m, Monad m) => SimpleREOptions -> (s -> s) -> s -> m re
- Text.RE: makeRegex :: (IsRegex re s, Functor m, Monad m) => s -> m re
- Text.RE: makeRegexWith :: (IsRegex re s, Functor m, Monad m) => SimpleREOptions -> s -> m re
- Text.RE: makeSearchReplace :: (IsRegex re s, Functor m, Monad m, IsRegex re s) => s -> s -> m (SearchReplace re s)
- Text.RE: makeSearchReplaceWith :: (IsRegex re s, Functor m, Monad m, IsRegex re s) => SimpleREOptions -> s -> s -> m (SearchReplace re s)
- Text.RE: matchMany :: IsRegex re s => re -> s -> Matches s
- Text.RE: matchOnce :: IsRegex re s => re -> s -> Match s
- Text.RE: matchSource :: Match a -> a
- Text.RE: matched :: Match a -> Bool
- Text.RE: matchedText :: Match a -> Maybe a
- Text.RE: matches :: Matches a -> [a]
- Text.RE: matchesSource :: Matches a -> a
- Text.RE: regexSource :: IsRegex re s => re -> s
- Text.RE: searchReplaceAll :: IsRegex re s => SearchReplace re s -> s -> s
- Text.RE: searchReplaceFirst :: IsRegex re s => SearchReplace re s -> s -> s
- Text.RE.TDFA: class Replace s => IsRegex re s where makeRegex = makeRegexWith minBound makeSearchReplace = makeSearchReplaceWith minBound makeEscaped = makeEscapedWith minBound makeEscapedWith o f = makeRegexWith o . f . packR . escapeREString . unpackR
- Text.RE.TDFA: makeEscaped :: (IsRegex re s, Functor m, Monad m) => (s -> s) -> s -> m re
- Text.RE.TDFA: makeEscapedWith :: (IsRegex re s, Functor m, Monad m) => SimpleREOptions -> (s -> s) -> s -> m re
- Text.RE.TDFA: makeRegex :: (IsRegex re s, Functor m, Monad m) => s -> m re
- Text.RE.TDFA: makeRegexWith :: (IsRegex re s, Functor m, Monad m) => SimpleREOptions -> s -> m re
- Text.RE.TDFA: makeSearchReplace :: (IsRegex re s, Functor m, Monad m, IsRegex re s) => s -> s -> m (SearchReplace re s)
- Text.RE.TDFA: makeSearchReplaceWith :: (IsRegex re s, Functor m, Monad m, IsRegex re s) => SimpleREOptions -> s -> s -> m (SearchReplace re s)
- Text.RE.TDFA: matchMany :: IsRegex re s => re -> s -> Matches s
- Text.RE.TDFA: matchOnce :: IsRegex re s => re -> s -> Match s
- Text.RE.TDFA: regexSource :: IsRegex re s => re -> s
- Text.RE.TDFA.ByteString: class Replace s => IsRegex re s where makeRegex = makeRegexWith minBound makeSearchReplace = makeSearchReplaceWith minBound makeEscaped = makeEscapedWith minBound makeEscapedWith o f = makeRegexWith o . f . packR . escapeREString . unpackR
- Text.RE.TDFA.ByteString: makeEscaped :: (IsRegex re s, Functor m, Monad m) => (s -> s) -> s -> m re
- Text.RE.TDFA.ByteString: makeEscapedWith :: (IsRegex re s, Functor m, Monad m) => SimpleREOptions -> (s -> s) -> s -> m re
- Text.RE.TDFA.ByteString: makeRegex :: (IsRegex re s, Functor m, Monad m) => s -> m re
- Text.RE.TDFA.ByteString: makeRegexWith :: (IsRegex re s, Functor m, Monad m) => SimpleREOptions -> s -> m re
- Text.RE.TDFA.ByteString: makeSearchReplace :: (IsRegex re s, Functor m, Monad m, IsRegex re s) => s -> s -> m (SearchReplace re s)
- Text.RE.TDFA.ByteString: makeSearchReplaceWith :: (IsRegex re s, Functor m, Monad m, IsRegex re s) => SimpleREOptions -> s -> s -> m (SearchReplace re s)
- Text.RE.TDFA.ByteString: matchMany :: IsRegex re s => re -> s -> Matches s
- Text.RE.TDFA.ByteString: matchOnce :: IsRegex re s => re -> s -> Match s
- Text.RE.TDFA.ByteString: regexSource :: IsRegex re s => re -> s
- Text.RE.TDFA.ByteString.Lazy: class Replace s => IsRegex re s where makeRegex = makeRegexWith minBound makeSearchReplace = makeSearchReplaceWith minBound makeEscaped = makeEscapedWith minBound makeEscapedWith o f = makeRegexWith o . f . packR . escapeREString . unpackR
- Text.RE.TDFA.ByteString.Lazy: makeEscaped :: (IsRegex re s, Functor m, Monad m) => (s -> s) -> s -> m re
- Text.RE.TDFA.ByteString.Lazy: makeEscapedWith :: (IsRegex re s, Functor m, Monad m) => SimpleREOptions -> (s -> s) -> s -> m re
- Text.RE.TDFA.ByteString.Lazy: makeRegex :: (IsRegex re s, Functor m, Monad m) => s -> m re
- Text.RE.TDFA.ByteString.Lazy: makeRegexWith :: (IsRegex re s, Functor m, Monad m) => SimpleREOptions -> s -> m re
- Text.RE.TDFA.ByteString.Lazy: makeSearchReplace :: (IsRegex re s, Functor m, Monad m, IsRegex re s) => s -> s -> m (SearchReplace re s)
- Text.RE.TDFA.ByteString.Lazy: makeSearchReplaceWith :: (IsRegex re s, Functor m, Monad m, IsRegex re s) => SimpleREOptions -> s -> s -> m (SearchReplace re s)
- Text.RE.TDFA.ByteString.Lazy: matchMany :: IsRegex re s => re -> s -> Matches s
- Text.RE.TDFA.ByteString.Lazy: matchOnce :: IsRegex re s => re -> s -> Match s
- Text.RE.TDFA.ByteString.Lazy: regexSource :: IsRegex re s => re -> s
- Text.RE.TDFA.Sequence: class Replace s => IsRegex re s where makeRegex = makeRegexWith minBound makeSearchReplace = makeSearchReplaceWith minBound makeEscaped = makeEscapedWith minBound makeEscapedWith o f = makeRegexWith o . f . packR . escapeREString . unpackR
- Text.RE.TDFA.Sequence: makeEscaped :: (IsRegex re s, Functor m, Monad m) => (s -> s) -> s -> m re
- Text.RE.TDFA.Sequence: makeEscapedWith :: (IsRegex re s, Functor m, Monad m) => SimpleREOptions -> (s -> s) -> s -> m re
- Text.RE.TDFA.Sequence: makeRegex :: (IsRegex re s, Functor m, Monad m) => s -> m re
- Text.RE.TDFA.Sequence: makeRegexWith :: (IsRegex re s, Functor m, Monad m) => SimpleREOptions -> s -> m re
- Text.RE.TDFA.Sequence: makeSearchReplace :: (IsRegex re s, Functor m, Monad m, IsRegex re s) => s -> s -> m (SearchReplace re s)
- Text.RE.TDFA.Sequence: makeSearchReplaceWith :: (IsRegex re s, Functor m, Monad m, IsRegex re s) => SimpleREOptions -> s -> s -> m (SearchReplace re s)
- Text.RE.TDFA.Sequence: matchMany :: IsRegex re s => re -> s -> Matches s
- Text.RE.TDFA.Sequence: matchOnce :: IsRegex re s => re -> s -> Match s
- Text.RE.TDFA.Sequence: regexSource :: IsRegex re s => re -> s
- Text.RE.TDFA.String: class Replace s => IsRegex re s where makeRegex = makeRegexWith minBound makeSearchReplace = makeSearchReplaceWith minBound makeEscaped = makeEscapedWith minBound makeEscapedWith o f = makeRegexWith o . f . packR . escapeREString . unpackR
- Text.RE.TDFA.String: makeEscaped :: (IsRegex re s, Functor m, Monad m) => (s -> s) -> s -> m re
- Text.RE.TDFA.String: makeEscapedWith :: (IsRegex re s, Functor m, Monad m) => SimpleREOptions -> (s -> s) -> s -> m re
- Text.RE.TDFA.String: makeRegex :: (IsRegex re s, Functor m, Monad m) => s -> m re
- Text.RE.TDFA.String: makeRegexWith :: (IsRegex re s, Functor m, Monad m) => SimpleREOptions -> s -> m re
- Text.RE.TDFA.String: makeSearchReplace :: (IsRegex re s, Functor m, Monad m, IsRegex re s) => s -> s -> m (SearchReplace re s)
- Text.RE.TDFA.String: makeSearchReplaceWith :: (IsRegex re s, Functor m, Monad m, IsRegex re s) => SimpleREOptions -> s -> s -> m (SearchReplace re s)
- Text.RE.TDFA.String: matchMany :: IsRegex re s => re -> s -> Matches s
- Text.RE.TDFA.String: matchOnce :: IsRegex re s => re -> s -> Match s
- Text.RE.TDFA.String: regexSource :: IsRegex re s => re -> s
- Text.RE.TDFA.Text: class Replace s => IsRegex re s where makeRegex = makeRegexWith minBound makeSearchReplace = makeSearchReplaceWith minBound makeEscaped = makeEscapedWith minBound makeEscapedWith o f = makeRegexWith o . f . packR . escapeREString . unpackR
- Text.RE.TDFA.Text: makeEscaped :: (IsRegex re s, Functor m, Monad m) => (s -> s) -> s -> m re
- Text.RE.TDFA.Text: makeEscapedWith :: (IsRegex re s, Functor m, Monad m) => SimpleREOptions -> (s -> s) -> s -> m re
- Text.RE.TDFA.Text: makeRegex :: (IsRegex re s, Functor m, Monad m) => s -> m re
- Text.RE.TDFA.Text: makeRegexWith :: (IsRegex re s, Functor m, Monad m) => SimpleREOptions -> s -> m re
- Text.RE.TDFA.Text: makeSearchReplace :: (IsRegex re s, Functor m, Monad m, IsRegex re s) => s -> s -> m (SearchReplace re s)
- Text.RE.TDFA.Text: makeSearchReplaceWith :: (IsRegex re s, Functor m, Monad m, IsRegex re s) => SimpleREOptions -> s -> s -> m (SearchReplace re s)
- Text.RE.TDFA.Text: matchMany :: IsRegex re s => re -> s -> Matches s
- Text.RE.TDFA.Text: matchOnce :: IsRegex re s => re -> s -> Match s
- Text.RE.TDFA.Text: regexSource :: IsRegex re s => re -> s
- Text.RE.TDFA.Text.Lazy: class Replace s => IsRegex re s where makeRegex = makeRegexWith minBound makeSearchReplace = makeSearchReplaceWith minBound makeEscaped = makeEscapedWith minBound makeEscapedWith o f = makeRegexWith o . f . packR . escapeREString . unpackR
- Text.RE.TDFA.Text.Lazy: makeEscaped :: (IsRegex re s, Functor m, Monad m) => (s -> s) -> s -> m re
- Text.RE.TDFA.Text.Lazy: makeEscapedWith :: (IsRegex re s, Functor m, Monad m) => SimpleREOptions -> (s -> s) -> s -> m re
- Text.RE.TDFA.Text.Lazy: makeRegex :: (IsRegex re s, Functor m, Monad m) => s -> m re
- Text.RE.TDFA.Text.Lazy: makeRegexWith :: (IsRegex re s, Functor m, Monad m) => SimpleREOptions -> s -> m re
- Text.RE.TDFA.Text.Lazy: makeSearchReplace :: (IsRegex re s, Functor m, Monad m, IsRegex re s) => s -> s -> m (SearchReplace re s)
- Text.RE.TDFA.Text.Lazy: makeSearchReplaceWith :: (IsRegex re s, Functor m, Monad m, IsRegex re s) => SimpleREOptions -> s -> s -> m (SearchReplace re s)
- Text.RE.TDFA.Text.Lazy: matchMany :: IsRegex re s => re -> s -> Matches s
- Text.RE.TDFA.Text.Lazy: matchOnce :: IsRegex re s => re -> s -> Match s
- Text.RE.TDFA.Text.Lazy: regexSource :: IsRegex re s => re -> s
- Text.RE.TestBench: Alert :: Severity
- Text.RE.TestBench: Crit :: Severity
- Text.RE.TestBench: Debug :: Severity
- Text.RE.TestBench: Emerg :: Severity
- Text.RE.TestBench: Err :: Severity
- Text.RE.TestBench: Info :: Severity
- Text.RE.TestBench: Notice :: Severity
- Text.RE.TestBench: Warning :: Severity
- Text.RE.TestBench: data Severity
- Text.RE.TestBench: parseDate :: Replace a => a -> Maybe Day
- Text.RE.TestBench: parseDateTime :: Replace a => a -> Maybe UTCTime
- Text.RE.TestBench: parseDateTime8601 :: Replace a => a -> Maybe UTCTime
- Text.RE.TestBench: parseDateTimeCLF :: Replace a => a -> Maybe UTCTime
- Text.RE.TestBench: parseDouble :: Replace a => a -> Maybe Double
- Text.RE.TestBench: parseHex :: Replace a => a -> Maybe Int
- Text.RE.TestBench: parseIPv4Address :: Replace a => a -> Maybe IPV4Address
- Text.RE.TestBench: parseInteger :: Replace a => a -> Maybe Int
- Text.RE.TestBench: parseSeverity :: Replace a => a -> Maybe Severity
- Text.RE.TestBench: parseShortMonth :: Replace a => a -> Maybe Int
- Text.RE.TestBench: parseSimpleString :: Replace a => a -> Maybe Text
- Text.RE.TestBench: parseSlashesDate :: Replace a => a -> Maybe Day
- Text.RE.TestBench: parseString :: Replace a => a -> Maybe Text
- Text.RE.TestBench: parseTimeOfDay :: Replace a => a -> Maybe TimeOfDay
- Text.RE.TestBench: parseTimeZone :: Replace a => a -> Maybe TimeZone
- Text.RE.TestBench: severityKeywords :: Severity -> (Text, [Text])
- Text.RE.TestBench: shortMonthArray :: Array Int Text
- Text.RE.TestBench: type IPV4Address = (Word8, Word8, Word8, Word8)
- Text.RE.ZeInternals.AddCaptureNames: addCaptureNames :: Typeable a => CaptureNames -> a -> a
- Text.RE.ZeInternals.AddCaptureNames: addCaptureNamesToMatch :: CaptureNames -> Match a -> Match a
- Text.RE.ZeInternals.AddCaptureNames: addCaptureNamesToMatches :: CaptureNames -> Matches a -> Matches a
- Text.RE.ZeInternals.EscapeREString: escapeREString :: String -> String
- Text.RE.ZeInternals.EscapeREString: isMetaChar :: Char -> Bool
- Text.RE.ZeInternals.NamedCaptures: BS :: Char -> Token
- Text.RE.ZeInternals.NamedCaptures: Bra :: Token
- Text.RE.ZeInternals.NamedCaptures: ECap :: (Maybe String) -> Token
- Text.RE.ZeInternals.NamedCaptures: Other :: Char -> Token
- Text.RE.ZeInternals.NamedCaptures: PCap :: Token
- Text.RE.ZeInternals.NamedCaptures: PGrp :: Token
- Text.RE.ZeInternals.NamedCaptures: cp :: QuasiQuoter
- Text.RE.ZeInternals.NamedCaptures: data Token
- Text.RE.ZeInternals.NamedCaptures: extractNamedCaptures :: String -> Either String ((Int, CaptureNames), String)
- Text.RE.ZeInternals.NamedCaptures: formatTokens :: [Token] -> String
- Text.RE.ZeInternals.NamedCaptures: formatTokens' :: FormatTokenREOptions -> [Token] -> String
- Text.RE.ZeInternals.NamedCaptures: formatTokens0 :: [Token] -> String
- Text.RE.ZeInternals.NamedCaptures: idFormatTokenREOptions :: FormatTokenREOptions
- Text.RE.ZeInternals.NamedCaptures: instance GHC.Classes.Eq Text.RE.ZeInternals.NamedCaptures.Token
- Text.RE.ZeInternals.NamedCaptures: instance GHC.Generics.Generic Text.RE.ZeInternals.NamedCaptures.Token
- Text.RE.ZeInternals.NamedCaptures: instance GHC.Show.Show Text.RE.ZeInternals.NamedCaptures.FormatTokenREOptions
- Text.RE.ZeInternals.NamedCaptures: instance GHC.Show.Show Text.RE.ZeInternals.NamedCaptures.Token
- Text.RE.ZeInternals.NamedCaptures: scan :: String -> [Token]
- Text.RE.ZeInternals.NamedCaptures: validToken :: Token -> Bool
- Text.RE.ZeInternals.PreludeMacros: ExclCaptures :: WithCaptures
- Text.RE.ZeInternals.PreludeMacros: InclCaptures :: WithCaptures
- Text.RE.ZeInternals.PreludeMacros: MacroDescriptor :: !RegexSource -> ![String] -> ![String] -> ![TestResult] -> !(Maybe FunctionID) -> !String -> MacroDescriptor
- Text.RE.ZeInternals.PreludeMacros: PM_address_ipv4 :: PreludeMacro
- Text.RE.ZeInternals.PreludeMacros: PM_date :: PreludeMacro
- Text.RE.ZeInternals.PreludeMacros: PM_date_slashes :: PreludeMacro
- Text.RE.ZeInternals.PreludeMacros: PM_datetime :: PreludeMacro
- Text.RE.ZeInternals.PreludeMacros: PM_datetime_8601 :: PreludeMacro
- Text.RE.ZeInternals.PreludeMacros: PM_datetime_clf :: PreludeMacro
- Text.RE.ZeInternals.PreludeMacros: PM_email_simple :: PreludeMacro
- Text.RE.ZeInternals.PreludeMacros: PM_frac :: PreludeMacro
- Text.RE.ZeInternals.PreludeMacros: PM_hex :: PreludeMacro
- Text.RE.ZeInternals.PreludeMacros: PM_id :: PreludeMacro
- Text.RE.ZeInternals.PreludeMacros: PM_id' :: PreludeMacro
- Text.RE.ZeInternals.PreludeMacros: PM_id_ :: PreludeMacro
- Text.RE.ZeInternals.PreludeMacros: PM_int :: PreludeMacro
- Text.RE.ZeInternals.PreludeMacros: PM_nat :: PreludeMacro
- Text.RE.ZeInternals.PreludeMacros: PM_shortmonth :: PreludeMacro
- Text.RE.ZeInternals.PreludeMacros: PM_string :: PreludeMacro
- Text.RE.ZeInternals.PreludeMacros: PM_string_simple :: PreludeMacro
- Text.RE.ZeInternals.PreludeMacros: PM_syslog_severity :: PreludeMacro
- Text.RE.ZeInternals.PreludeMacros: PM_time :: PreludeMacro
- Text.RE.ZeInternals.PreludeMacros: PM_timezone :: PreludeMacro
- Text.RE.ZeInternals.PreludeMacros: PM_url :: PreludeMacro
- Text.RE.ZeInternals.PreludeMacros: RegexSource :: String -> RegexSource
- Text.RE.ZeInternals.PreludeMacros: [_RegexSource] :: RegexSource -> String
- Text.RE.ZeInternals.PreludeMacros: [macroCounterSamples] :: MacroDescriptor -> ![String]
- Text.RE.ZeInternals.PreludeMacros: [macroDescription] :: MacroDescriptor -> !String
- Text.RE.ZeInternals.PreludeMacros: [macroParser] :: MacroDescriptor -> !(Maybe FunctionID)
- Text.RE.ZeInternals.PreludeMacros: [macroSamples] :: MacroDescriptor -> ![String]
- Text.RE.ZeInternals.PreludeMacros: [macroSource] :: MacroDescriptor -> !RegexSource
- Text.RE.ZeInternals.PreludeMacros: [macroTestResults] :: MacroDescriptor -> ![TestResult]
- Text.RE.ZeInternals.PreludeMacros: data MacroDescriptor
- Text.RE.ZeInternals.PreludeMacros: data PreludeMacro
- Text.RE.ZeInternals.PreludeMacros: data RegexType
- Text.RE.ZeInternals.PreludeMacros: data WithCaptures
- Text.RE.ZeInternals.PreludeMacros: instance GHC.Classes.Eq Text.RE.ZeInternals.PreludeMacros.PreludeMacro
- Text.RE.ZeInternals.PreludeMacros: instance GHC.Classes.Ord Text.RE.ZeInternals.PreludeMacros.PreludeMacro
- Text.RE.ZeInternals.PreludeMacros: instance GHC.Enum.Bounded Text.RE.ZeInternals.PreludeMacros.PreludeMacro
- Text.RE.ZeInternals.PreludeMacros: instance GHC.Enum.Enum Text.RE.ZeInternals.PreludeMacros.PreludeMacro
- Text.RE.ZeInternals.PreludeMacros: instance GHC.Show.Show Text.RE.ZeInternals.PreludeMacros.PreludeMacro
- Text.RE.ZeInternals.PreludeMacros: newtype RegexSource
- Text.RE.ZeInternals.PreludeMacros: preludeMacroDescriptor :: RegexType -> MacroEnv -> PreludeMacro -> Maybe MacroDescriptor
- Text.RE.ZeInternals.PreludeMacros: preludeMacroEnv :: RegexType -> MacroEnv
- Text.RE.ZeInternals.PreludeMacros: preludeMacroSource :: RegexType -> PreludeMacro -> String
- Text.RE.ZeInternals.PreludeMacros: preludeMacroSources :: RegexType -> String
- Text.RE.ZeInternals.PreludeMacros: preludeMacroSummary :: RegexType -> PreludeMacro -> String
- Text.RE.ZeInternals.PreludeMacros: preludeMacroTable :: RegexType -> String
- Text.RE.ZeInternals.PreludeMacros: preludeMacros :: (Monad m, Functor m) => (String -> m r) -> RegexType -> WithCaptures -> m (Macros r)
- Text.RE.ZeInternals.PreludeMacros: presentPreludeMacro :: PreludeMacro -> String
- Text.RE.ZeInternals.QQ: QQFailure :: String -> String -> QQFailure
- Text.RE.ZeInternals.QQ: [_qqf_component] :: QQFailure -> String
- Text.RE.ZeInternals.QQ: [_qqf_context] :: QQFailure -> String
- Text.RE.ZeInternals.QQ: data QQFailure
- Text.RE.ZeInternals.QQ: instance GHC.Exception.Exception Text.RE.ZeInternals.QQ.QQFailure
- Text.RE.ZeInternals.QQ: instance GHC.Show.Show Text.RE.ZeInternals.QQ.QQFailure
- Text.RE.ZeInternals.QQ: qq0 :: String -> QuasiQuoter
- Text.RE.ZeInternals.Replace: ALL :: REContext
- Text.RE.ZeInternals.Replace: RELocation :: Int -> CaptureOrdinal -> RELocation
- Text.RE.ZeInternals.Replace: ReplaceMethods :: (a -> Int) -> ((a -> a) -> Capture a -> a) -> ReplaceMethods a
- Text.RE.ZeInternals.Replace: SUB :: REContext
- Text.RE.ZeInternals.Replace: TOP :: REContext
- Text.RE.ZeInternals.Replace: [locationCapture] :: RELocation -> CaptureOrdinal
- Text.RE.ZeInternals.Replace: [locationMatch] :: RELocation -> Int
- Text.RE.ZeInternals.Replace: [methodLength] :: ReplaceMethods a -> a -> Int
- Text.RE.ZeInternals.Replace: [methodSubst] :: ReplaceMethods a -> (a -> a) -> Capture a -> a
- Text.RE.ZeInternals.Replace: appendNewlineR :: Replace a => a -> a
- Text.RE.ZeInternals.Replace: class (Show a, Eq a, Ord a, Extract a, Monoid a) => Replace a where textifyR = pack . unpackR detextifyR = packR . unpack appendNewlineR = (<> packR "\n") substR f m@(Capture {..}) = capturePrefix m <> f capturedText <> captureSuffix m
- Text.RE.ZeInternals.Replace: data REContext
- Text.RE.ZeInternals.Replace: data RELocation
- Text.RE.ZeInternals.Replace: data ReplaceMethods a
- Text.RE.ZeInternals.Replace: detextifyR :: Replace a => Text -> a
- Text.RE.ZeInternals.Replace: expandMacros :: (r -> String) -> Macros r -> String -> String
- Text.RE.ZeInternals.Replace: expandMacros' :: (MacroID -> Maybe String) -> String -> String
- Text.RE.ZeInternals.Replace: instance GHC.Show.Show Text.RE.ZeInternals.Replace.REContext
- Text.RE.ZeInternals.Replace: instance GHC.Show.Show Text.RE.ZeInternals.Replace.RELocation
- Text.RE.ZeInternals.Replace: instance Text.RE.ZeInternals.Replace.Replace (Data.Sequence.Seq GHC.Types.Char)
- Text.RE.ZeInternals.Replace: instance Text.RE.ZeInternals.Replace.Replace Data.ByteString.Internal.ByteString
- Text.RE.ZeInternals.Replace: instance Text.RE.ZeInternals.Replace.Replace Data.ByteString.Lazy.Internal.ByteString
- Text.RE.ZeInternals.Replace: instance Text.RE.ZeInternals.Replace.Replace Data.Text.Internal.Lazy.Text
- Text.RE.ZeInternals.Replace: instance Text.RE.ZeInternals.Replace.Replace Data.Text.Internal.Text
- Text.RE.ZeInternals.Replace: instance Text.RE.ZeInternals.Replace.Replace [GHC.Types.Char]
- Text.RE.ZeInternals.Replace: isTopLocation :: RELocation -> Bool
- Text.RE.ZeInternals.Replace: lengthR :: Replace a => a -> Int
- Text.RE.ZeInternals.Replace: linesR :: Replace a => a -> [a]
- Text.RE.ZeInternals.Replace: packR :: Replace a => String -> a
- Text.RE.ZeInternals.Replace: parseTemplateR :: Replace a => a -> Match a -> RELocation -> Capture a -> Maybe a
- Text.RE.ZeInternals.Replace: replace :: Replace a => a -> Match a -> a
- Text.RE.ZeInternals.Replace: replaceAll :: Replace a => a -> Matches a -> a
- Text.RE.ZeInternals.Replace: replaceAllCaptures :: Replace a => REContext -> (Match a -> RELocation -> Capture a -> Maybe a) -> Matches a -> a
- Text.RE.ZeInternals.Replace: replaceAllCapturesM :: (Extract a, Monad m) => ReplaceMethods a -> REContext -> (Match a -> RELocation -> Capture a -> m (Maybe a)) -> Matches a -> m a
- Text.RE.ZeInternals.Replace: replaceAllCaptures_ :: Extract a => ReplaceMethods a -> REContext -> (Match a -> RELocation -> Capture a -> Maybe a) -> Matches a -> a
- Text.RE.ZeInternals.Replace: replaceCaptures :: Replace a => REContext -> (Match a -> RELocation -> Capture a -> Maybe a) -> Match a -> a
- Text.RE.ZeInternals.Replace: replaceCapturesM :: (Monad m, Extract a) => ReplaceMethods a -> REContext -> (Match a -> RELocation -> Capture a -> m (Maybe a)) -> Match a -> m a
- Text.RE.ZeInternals.Replace: replaceCaptures_ :: Extract a => ReplaceMethods a -> REContext -> (Match a -> RELocation -> Capture a -> Maybe a) -> Match a -> a
- Text.RE.ZeInternals.Replace: replaceMethods :: Replace a => ReplaceMethods a
- Text.RE.ZeInternals.Replace: substR :: Replace a => (a -> a) -> Capture a -> a
- Text.RE.ZeInternals.Replace: templateCaptures :: (Replace a, RegexContext Regex a (Matches a), RegexMaker Regex CompOption ExecOption String) => (a -> String) -> a -> [CaptureID]
- Text.RE.ZeInternals.Replace: textifyR :: Replace a => a -> Text
- Text.RE.ZeInternals.Replace: unlinesR :: Replace a => [a] -> a
- Text.RE.ZeInternals.Replace: unpackR :: Replace a => a -> String
- Text.RE.ZeInternals.SearchReplace: compileSearchAndReplace_ :: (Monad m, Functor m) => (String -> s) -> (String -> Either String re) -> String -> String -> m (SearchReplace re s)
- Text.RE.ZeInternals.SearchReplace: compileSearchReplace_ :: (Monad m, Functor m) => (String -> s) -> (String -> Either String re) -> String -> m (SearchReplace re s)
- Text.RE.ZeInternals.SearchReplace: unsafeCompileSearchReplace_ :: (String -> s) -> (String -> Either String re) -> String -> SearchReplace re s
- Text.RE.ZeInternals.SearchReplace.TDFA: ed :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA: edBI :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA: edBS :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA: edBlockInsensitive :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA: edBlockSensitive :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA: edMI :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA: edMS :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA: edMultilineInsensitive :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA: edMultilineSensitive :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA: ed_ :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.ByteString: ed :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.ByteString: edBI :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.ByteString: edBS :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.ByteString: edBlockInsensitive :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.ByteString: edBlockSensitive :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.ByteString: edMI :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.ByteString: edMS :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.ByteString: edMultilineInsensitive :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.ByteString: edMultilineSensitive :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.ByteString: ed_ :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.ByteString.Lazy: ed :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.ByteString.Lazy: edBI :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.ByteString.Lazy: edBS :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.ByteString.Lazy: edBlockInsensitive :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.ByteString.Lazy: edBlockSensitive :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.ByteString.Lazy: edMI :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.ByteString.Lazy: edMS :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.ByteString.Lazy: edMultilineInsensitive :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.ByteString.Lazy: edMultilineSensitive :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.ByteString.Lazy: ed_ :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.Sequence: ed :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.Sequence: edBI :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.Sequence: edBS :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.Sequence: edBlockInsensitive :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.Sequence: edBlockSensitive :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.Sequence: edMI :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.Sequence: edMS :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.Sequence: edMultilineInsensitive :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.Sequence: edMultilineSensitive :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.Sequence: ed_ :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.String: ed :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.String: edBI :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.String: edBS :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.String: edBlockInsensitive :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.String: edBlockSensitive :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.String: edMI :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.String: edMS :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.String: edMultilineInsensitive :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.String: edMultilineSensitive :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.String: ed_ :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.Text: ed :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.Text: edBI :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.Text: edBS :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.Text: edBlockInsensitive :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.Text: edBlockSensitive :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.Text: edMI :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.Text: edMS :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.Text: edMultilineInsensitive :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.Text: edMultilineSensitive :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.Text: ed_ :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.Text.Lazy: ed :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.Text.Lazy: edBI :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.Text.Lazy: edBS :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.Text.Lazy: edBlockInsensitive :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.Text.Lazy: edBlockSensitive :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.Text.Lazy: edMI :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.Text.Lazy: edMS :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.Text.Lazy: edMultilineInsensitive :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.Text.Lazy: edMultilineSensitive :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFA.Text.Lazy: ed_ :: QuasiQuoter
- Text.RE.ZeInternals.SearchReplace.TDFAEdPrime: ed' :: Q Exp -> Maybe SimpleREOptions -> QuasiQuoter
- Text.RE.ZeInternals.TDFA: class IsOption o
- Text.RE.ZeInternals.TDFA: compileRegex :: (Functor m, Monad m) => String -> m RE
- Text.RE.ZeInternals.TDFA: compileRegexWith :: (Functor m, Monad m) => SimpleREOptions -> String -> m RE
- Text.RE.ZeInternals.TDFA: compileRegexWithOptions :: (IsOption o, Functor m, Monad m) => o -> String -> m RE
- Text.RE.ZeInternals.TDFA: compileSearchReplace :: (Monad m, Functor m, IsRegex RE s) => String -> String -> m (SearchReplace RE s)
- Text.RE.ZeInternals.TDFA: compileSearchReplaceWith :: (Monad m, Functor m, IsRegex RE s) => SimpleREOptions -> String -> String -> m (SearchReplace RE s)
- Text.RE.ZeInternals.TDFA: compileSearchReplaceWithREOptions :: (Monad m, Functor m, IsRegex RE s) => REOptions -> String -> String -> m (SearchReplace RE s)
- Text.RE.ZeInternals.TDFA: cp :: QuasiQuoter
- Text.RE.ZeInternals.TDFA: data RE
- Text.RE.ZeInternals.TDFA: defaultREOptions :: REOptions
- Text.RE.ZeInternals.TDFA: escape :: (Functor m, Monad m) => (String -> String) -> String -> m RE
- Text.RE.ZeInternals.TDFA: escapeREString :: String -> String
- Text.RE.ZeInternals.TDFA: escapeWith :: (Functor m, Monad m) => SimpleREOptions -> (String -> String) -> String -> m RE
- Text.RE.ZeInternals.TDFA: escapeWithOptions :: (IsOption o, Functor m, Monad m) => o -> (String -> String) -> String -> m RE
- Text.RE.ZeInternals.TDFA: instance Text.RE.ZeInternals.TDFA.IsOption ()
- Text.RE.ZeInternals.TDFA: instance Text.RE.ZeInternals.TDFA.IsOption (Text.RE.REOptions.Macros Text.RE.ZeInternals.TDFA.RE)
- Text.RE.ZeInternals.TDFA: instance Text.RE.ZeInternals.TDFA.IsOption Text.RE.REOptions.SimpleREOptions
- Text.RE.ZeInternals.TDFA: instance Text.RE.ZeInternals.TDFA.IsOption Text.RE.ZeInternals.TDFA.REOptions
- Text.RE.ZeInternals.TDFA: instance Text.RE.ZeInternals.TDFA.IsOption Text.Regex.TDFA.Common.CompOption
- Text.RE.ZeInternals.TDFA: instance Text.RE.ZeInternals.TDFA.IsOption Text.Regex.TDFA.Common.ExecOption
- Text.RE.ZeInternals.TDFA: makeREOptions :: IsOption o => o -> REOptions
- Text.RE.ZeInternals.TDFA: noPreludeREOptions :: REOptions
- Text.RE.ZeInternals.TDFA: prelude :: Macros RE
- Text.RE.ZeInternals.TDFA: preludeEnv :: MacroEnv
- Text.RE.ZeInternals.TDFA: preludeSource :: PreludeMacro -> String
- Text.RE.ZeInternals.TDFA: preludeSources :: String
- Text.RE.ZeInternals.TDFA: preludeSummary :: PreludeMacro -> String
- Text.RE.ZeInternals.TDFA: preludeTable :: String
- Text.RE.ZeInternals.TDFA: preludeTestsFailing :: [MacroID]
- Text.RE.ZeInternals.TDFA: re :: QuasiQuoter
- Text.RE.ZeInternals.TDFA: reBI :: QuasiQuoter
- Text.RE.ZeInternals.TDFA: reBS :: QuasiQuoter
- Text.RE.ZeInternals.TDFA: reBlockInsensitive :: QuasiQuoter
- Text.RE.ZeInternals.TDFA: reBlockSensitive :: QuasiQuoter
- Text.RE.ZeInternals.TDFA: reCaptureNames :: RE -> CaptureNames
- Text.RE.ZeInternals.TDFA: reMI :: QuasiQuoter
- Text.RE.ZeInternals.TDFA: reMS :: QuasiQuoter
- Text.RE.ZeInternals.TDFA: reMultilineInsensitive :: QuasiQuoter
- Text.RE.ZeInternals.TDFA: reMultilineSensitive :: QuasiQuoter
- Text.RE.ZeInternals.TDFA: reOptions :: RE -> REOptions
- Text.RE.ZeInternals.TDFA: reRegex :: RE -> Regex
- Text.RE.ZeInternals.TDFA: reSource :: RE -> String
- Text.RE.ZeInternals.TDFA: re_ :: QuasiQuoter
- Text.RE.ZeInternals.TDFA: regexType :: RegexType
- Text.RE.ZeInternals.TDFA: type REOptions = REOptions_ RE CompOption ExecOption
- Text.RE.ZeInternals.TDFA: unpackSimpleREOptions :: SimpleREOptions -> REOptions
- Text.RE.ZeInternals.TestBench: ExclCaptures :: WithCaptures
- Text.RE.ZeInternals.TestBench: FunctionID :: String -> FunctionID
- Text.RE.ZeInternals.TestBench: InclCaptures :: WithCaptures
- Text.RE.ZeInternals.TestBench: MacroDescriptor :: !RegexSource -> ![String] -> ![String] -> ![TestResult] -> !(Maybe FunctionID) -> !String -> MacroDescriptor
- Text.RE.ZeInternals.TestBench: MacroID :: String -> MacroID
- Text.RE.ZeInternals.TestBench: RegexSource :: String -> RegexSource
- Text.RE.ZeInternals.TestBench: TestResult :: String -> TestResult
- Text.RE.ZeInternals.TestBench: [_FunctionID] :: FunctionID -> String
- Text.RE.ZeInternals.TestBench: [_RegexSource] :: RegexSource -> String
- Text.RE.ZeInternals.TestBench: [_TestResult] :: TestResult -> String
- Text.RE.ZeInternals.TestBench: [getMacroID] :: MacroID -> String
- Text.RE.ZeInternals.TestBench: [macroCounterSamples] :: MacroDescriptor -> ![String]
- Text.RE.ZeInternals.TestBench: [macroDescription] :: MacroDescriptor -> !String
- Text.RE.ZeInternals.TestBench: [macroParser] :: MacroDescriptor -> !(Maybe FunctionID)
- Text.RE.ZeInternals.TestBench: [macroSamples] :: MacroDescriptor -> ![String]
- Text.RE.ZeInternals.TestBench: [macroSource] :: MacroDescriptor -> !RegexSource
- Text.RE.ZeInternals.TestBench: [macroTestResults] :: MacroDescriptor -> ![TestResult]
- Text.RE.ZeInternals.TestBench: badMacros :: MacroEnv -> [MacroID]
- Text.RE.ZeInternals.TestBench: data MacroDescriptor
- Text.RE.ZeInternals.TestBench: data RegexType
- Text.RE.ZeInternals.TestBench: data WithCaptures
- Text.RE.ZeInternals.TestBench: formatMacroSource :: RegexType -> WithCaptures -> MacroEnv -> MacroID -> String
- Text.RE.ZeInternals.TestBench: formatMacroSources :: RegexType -> WithCaptures -> MacroEnv -> String
- Text.RE.ZeInternals.TestBench: formatMacroSummary :: RegexType -> MacroEnv -> MacroID -> String
- Text.RE.ZeInternals.TestBench: formatMacroTable :: RegexType -> MacroEnv -> String
- Text.RE.ZeInternals.TestBench: instance Data.String.IsString Text.RE.ZeInternals.TestBench.FunctionID
- Text.RE.ZeInternals.TestBench: instance Data.String.IsString Text.RE.ZeInternals.TestBench.RegexSource
- Text.RE.ZeInternals.TestBench: instance Data.String.IsString Text.RE.ZeInternals.TestBench.TestResult
- Text.RE.ZeInternals.TestBench: instance GHC.Arr.Ix Text.RE.ZeInternals.TestBench.Col
- Text.RE.ZeInternals.TestBench: instance GHC.Classes.Eq Text.RE.ZeInternals.TestBench.Col
- Text.RE.ZeInternals.TestBench: instance GHC.Classes.Eq Text.RE.ZeInternals.TestBench.WithCaptures
- Text.RE.ZeInternals.TestBench: instance GHC.Classes.Ord Text.RE.ZeInternals.TestBench.Col
- Text.RE.ZeInternals.TestBench: instance GHC.Classes.Ord Text.RE.ZeInternals.TestBench.WithCaptures
- Text.RE.ZeInternals.TestBench: instance GHC.Enum.Bounded Text.RE.ZeInternals.TestBench.Col
- Text.RE.ZeInternals.TestBench: instance GHC.Enum.Enum Text.RE.ZeInternals.TestBench.Col
- Text.RE.ZeInternals.TestBench: instance GHC.Show.Show Text.RE.ZeInternals.TestBench.Col
- Text.RE.ZeInternals.TestBench: instance GHC.Show.Show Text.RE.ZeInternals.TestBench.FunctionID
- Text.RE.ZeInternals.TestBench: instance GHC.Show.Show Text.RE.ZeInternals.TestBench.MacroDescriptor
- Text.RE.ZeInternals.TestBench: instance GHC.Show.Show Text.RE.ZeInternals.TestBench.REToken
- Text.RE.ZeInternals.TestBench: instance GHC.Show.Show Text.RE.ZeInternals.TestBench.RegexSource
- Text.RE.ZeInternals.TestBench: instance GHC.Show.Show Text.RE.ZeInternals.TestBench.RegexType
- Text.RE.ZeInternals.TestBench: instance GHC.Show.Show Text.RE.ZeInternals.TestBench.TestResult
- Text.RE.ZeInternals.TestBench: instance GHC.Show.Show Text.RE.ZeInternals.TestBench.WithCaptures
- Text.RE.ZeInternals.TestBench: isPCRE :: RegexType -> Bool
- Text.RE.ZeInternals.TestBench: isTDFA :: RegexType -> Bool
- Text.RE.ZeInternals.TestBench: mdRegexSource :: RegexType -> WithCaptures -> MacroEnv -> MacroDescriptor -> String
- Text.RE.ZeInternals.TestBench: mkMacros :: (Monad m, Functor m) => (String -> m r) -> RegexType -> WithCaptures -> MacroEnv -> m (Macros r)
- Text.RE.ZeInternals.TestBench: mkPCRE :: TestBenchMatcher -> RegexType
- Text.RE.ZeInternals.TestBench: mkTDFA :: TestBenchMatcher -> RegexType
- Text.RE.ZeInternals.TestBench: newtype FunctionID
- Text.RE.ZeInternals.TestBench: newtype MacroID
- Text.RE.ZeInternals.TestBench: newtype RegexSource
- Text.RE.ZeInternals.TestBench: newtype TestResult
- Text.RE.ZeInternals.TestBench: presentRegexType :: RegexType -> String
- Text.RE.ZeInternals.TestBench: runTests :: (Eq a, Show a) => RegexType -> (String -> Maybe a) -> [(String, a)] -> MacroEnv -> MacroID -> MacroDescriptor -> MacroDescriptor
- Text.RE.ZeInternals.TestBench: runTests' :: (Eq a, Show a) => RegexType -> (Match String -> Maybe a) -> [(String, a)] -> MacroEnv -> MacroID -> MacroDescriptor -> MacroDescriptor
- Text.RE.ZeInternals.TestBench: testMacroDescriptors :: [MacroDescriptor] -> [TestResult]
- Text.RE.ZeInternals.TestBench: testMacroEnv :: String -> RegexType -> MacroEnv -> IO Bool
- Text.RE.ZeInternals.TestBench: type MacroEnv = HashMap MacroID MacroDescriptor
- Text.RE.ZeInternals.TestBench.Parsers: Alert :: Severity
- Text.RE.ZeInternals.TestBench.Parsers: Crit :: Severity
- Text.RE.ZeInternals.TestBench.Parsers: Debug :: Severity
- Text.RE.ZeInternals.TestBench.Parsers: Emerg :: Severity
- Text.RE.ZeInternals.TestBench.Parsers: Err :: Severity
- Text.RE.ZeInternals.TestBench.Parsers: ExclCaptures :: WithCaptures
- Text.RE.ZeInternals.TestBench.Parsers: InclCaptures :: WithCaptures
- Text.RE.ZeInternals.TestBench.Parsers: Info :: Severity
- Text.RE.ZeInternals.TestBench.Parsers: MacroDescriptor :: !RegexSource -> ![String] -> ![String] -> ![TestResult] -> !(Maybe FunctionID) -> !String -> MacroDescriptor
- Text.RE.ZeInternals.TestBench.Parsers: Notice :: Severity
- Text.RE.ZeInternals.TestBench.Parsers: RegexSource :: String -> RegexSource
- Text.RE.ZeInternals.TestBench.Parsers: Warning :: Severity
- Text.RE.ZeInternals.TestBench.Parsers: [_RegexSource] :: RegexSource -> String
- Text.RE.ZeInternals.TestBench.Parsers: [macroCounterSamples] :: MacroDescriptor -> ![String]
- Text.RE.ZeInternals.TestBench.Parsers: [macroDescription] :: MacroDescriptor -> !String
- Text.RE.ZeInternals.TestBench.Parsers: [macroParser] :: MacroDescriptor -> !(Maybe FunctionID)
- Text.RE.ZeInternals.TestBench.Parsers: [macroSamples] :: MacroDescriptor -> ![String]
- Text.RE.ZeInternals.TestBench.Parsers: [macroSource] :: MacroDescriptor -> !RegexSource
- Text.RE.ZeInternals.TestBench.Parsers: [macroTestResults] :: MacroDescriptor -> ![TestResult]
- Text.RE.ZeInternals.TestBench.Parsers: data MacroDescriptor
- Text.RE.ZeInternals.TestBench.Parsers: data RegexType
- Text.RE.ZeInternals.TestBench.Parsers: data Severity
- Text.RE.ZeInternals.TestBench.Parsers: data WithCaptures
- Text.RE.ZeInternals.TestBench.Parsers: formatMacroSource :: RegexType -> WithCaptures -> MacroEnv -> MacroID -> String
- Text.RE.ZeInternals.TestBench.Parsers: formatMacroSources :: RegexType -> WithCaptures -> MacroEnv -> String
- Text.RE.ZeInternals.TestBench.Parsers: formatMacroSummary :: RegexType -> MacroEnv -> MacroID -> String
- Text.RE.ZeInternals.TestBench.Parsers: formatMacroTable :: RegexType -> MacroEnv -> String
- Text.RE.ZeInternals.TestBench.Parsers: instance GHC.Classes.Eq Text.RE.ZeInternals.TestBench.Parsers.Severity
- Text.RE.ZeInternals.TestBench.Parsers: instance GHC.Classes.Ord Text.RE.ZeInternals.TestBench.Parsers.Severity
- Text.RE.ZeInternals.TestBench.Parsers: instance GHC.Enum.Bounded Text.RE.ZeInternals.TestBench.Parsers.Severity
- Text.RE.ZeInternals.TestBench.Parsers: instance GHC.Enum.Enum Text.RE.ZeInternals.TestBench.Parsers.Severity
- Text.RE.ZeInternals.TestBench.Parsers: instance GHC.Show.Show Text.RE.ZeInternals.TestBench.Parsers.Severity
- Text.RE.ZeInternals.TestBench.Parsers: isPCRE :: RegexType -> Bool
- Text.RE.ZeInternals.TestBench.Parsers: isTDFA :: RegexType -> Bool
- Text.RE.ZeInternals.TestBench.Parsers: mkMacros :: (Monad m, Functor m) => (String -> m r) -> RegexType -> WithCaptures -> MacroEnv -> m (Macros r)
- Text.RE.ZeInternals.TestBench.Parsers: newtype RegexSource
- Text.RE.ZeInternals.TestBench.Parsers: parseDate :: Replace a => a -> Maybe Day
- Text.RE.ZeInternals.TestBench.Parsers: parseDateTime :: Replace a => a -> Maybe UTCTime
- Text.RE.ZeInternals.TestBench.Parsers: parseDateTime8601 :: Replace a => a -> Maybe UTCTime
- Text.RE.ZeInternals.TestBench.Parsers: parseDateTimeCLF :: Replace a => a -> Maybe UTCTime
- Text.RE.ZeInternals.TestBench.Parsers: parseDouble :: Replace a => a -> Maybe Double
- Text.RE.ZeInternals.TestBench.Parsers: parseHex :: Replace a => a -> Maybe Int
- Text.RE.ZeInternals.TestBench.Parsers: parseIPv4Address :: Replace a => a -> Maybe IPV4Address
- Text.RE.ZeInternals.TestBench.Parsers: parseInteger :: Replace a => a -> Maybe Int
- Text.RE.ZeInternals.TestBench.Parsers: parseSeverity :: Replace a => a -> Maybe Severity
- Text.RE.ZeInternals.TestBench.Parsers: parseShortMonth :: Replace a => a -> Maybe Int
- Text.RE.ZeInternals.TestBench.Parsers: parseSimpleString :: Replace a => a -> Maybe Text
- Text.RE.ZeInternals.TestBench.Parsers: parseSlashesDate :: Replace a => a -> Maybe Day
- Text.RE.ZeInternals.TestBench.Parsers: parseString :: Replace a => a -> Maybe Text
- Text.RE.ZeInternals.TestBench.Parsers: parseTimeOfDay :: Replace a => a -> Maybe TimeOfDay
- Text.RE.ZeInternals.TestBench.Parsers: parseTimeZone :: Replace a => a -> Maybe TimeZone
- Text.RE.ZeInternals.TestBench.Parsers: presentRegexType :: RegexType -> String
- Text.RE.ZeInternals.TestBench.Parsers: runTests :: (Eq a, Show a) => RegexType -> (String -> Maybe a) -> [(String, a)] -> MacroEnv -> MacroID -> MacroDescriptor -> MacroDescriptor
- Text.RE.ZeInternals.TestBench.Parsers: runTests' :: (Eq a, Show a) => RegexType -> (Match String -> Maybe a) -> [(String, a)] -> MacroEnv -> MacroID -> MacroDescriptor -> MacroDescriptor
- Text.RE.ZeInternals.TestBench.Parsers: severityKeywords :: Severity -> (Text, [Text])
- Text.RE.ZeInternals.TestBench.Parsers: shortMonthArray :: Array Int Text
- Text.RE.ZeInternals.TestBench.Parsers: testMacroEnv :: String -> RegexType -> MacroEnv -> IO Bool
- Text.RE.ZeInternals.TestBench.Parsers: type IPV4Address = (Word8, Word8, Word8, Word8)
- Text.RE.ZeInternals.TestBench.Parsers: type MacroEnv = HashMap MacroID MacroDescriptor
- Text.RE.ZeInternals.Tools.Lex: alex :: IsRegex re s => [(re, Match s -> Maybe t)] -> t -> s -> [t]
- Text.RE.ZeInternals.Tools.Lex: alex' :: Replace s => (re -> s -> Match s) -> [(re, Match s -> Maybe t)] -> t -> s -> [t]
- Text.RE.ZeInternals.Types.Capture: Capture :: !a -> !a -> !Int -> !Int -> Capture a
- Text.RE.ZeInternals.Types.Capture: [captureLength] :: Capture a -> !Int
- Text.RE.ZeInternals.Types.Capture: [captureOffset] :: Capture a -> !Int
- Text.RE.ZeInternals.Types.Capture: [captureSource] :: Capture a -> !a
- Text.RE.ZeInternals.Types.Capture: [capturedText] :: Capture a -> !a
- Text.RE.ZeInternals.Types.Capture: capturePrefix :: Extract a => Capture a -> a
- Text.RE.ZeInternals.Types.Capture: captureSuffix :: Extract a => Capture a -> a
- Text.RE.ZeInternals.Types.Capture: data Capture a
- Text.RE.ZeInternals.Types.Capture: hasCaptured :: Capture a -> Bool
- Text.RE.ZeInternals.Types.Capture: instance GHC.Base.Functor Text.RE.ZeInternals.Types.Capture.Capture
- Text.RE.ZeInternals.Types.Capture: instance GHC.Classes.Eq a => GHC.Classes.Eq (Text.RE.ZeInternals.Types.Capture.Capture a)
- Text.RE.ZeInternals.Types.Capture: instance GHC.Show.Show a => GHC.Show.Show (Text.RE.ZeInternals.Types.Capture.Capture a)
- Text.RE.ZeInternals.Types.CaptureID: CaptureName :: Text -> CaptureName
- Text.RE.ZeInternals.Types.CaptureID: CaptureOrdinal :: Int -> CaptureOrdinal
- Text.RE.ZeInternals.Types.CaptureID: IsCaptureName :: CaptureName -> CaptureID
- Text.RE.ZeInternals.Types.CaptureID: IsCaptureOrdinal :: CaptureOrdinal -> CaptureID
- Text.RE.ZeInternals.Types.CaptureID: [getCaptureName] :: CaptureName -> Text
- Text.RE.ZeInternals.Types.CaptureID: [getCaptureOrdinal] :: CaptureOrdinal -> Int
- Text.RE.ZeInternals.Types.CaptureID: data CaptureID
- Text.RE.ZeInternals.Types.CaptureID: findCaptureID :: CaptureID -> CaptureNames -> Either String Int
- Text.RE.ZeInternals.Types.CaptureID: instance Data.Hashable.Class.Hashable Text.RE.ZeInternals.Types.CaptureID.CaptureName
- Text.RE.ZeInternals.Types.CaptureID: instance GHC.Arr.Ix Text.RE.ZeInternals.Types.CaptureID.CaptureOrdinal
- Text.RE.ZeInternals.Types.CaptureID: instance GHC.Classes.Eq Text.RE.ZeInternals.Types.CaptureID.CaptureID
- Text.RE.ZeInternals.Types.CaptureID: instance GHC.Classes.Eq Text.RE.ZeInternals.Types.CaptureID.CaptureName
- Text.RE.ZeInternals.Types.CaptureID: instance GHC.Classes.Eq Text.RE.ZeInternals.Types.CaptureID.CaptureOrdinal
- Text.RE.ZeInternals.Types.CaptureID: instance GHC.Classes.Ord Text.RE.ZeInternals.Types.CaptureID.CaptureID
- Text.RE.ZeInternals.Types.CaptureID: instance GHC.Classes.Ord Text.RE.ZeInternals.Types.CaptureID.CaptureName
- Text.RE.ZeInternals.Types.CaptureID: instance GHC.Classes.Ord Text.RE.ZeInternals.Types.CaptureID.CaptureOrdinal
- Text.RE.ZeInternals.Types.CaptureID: instance GHC.Enum.Enum Text.RE.ZeInternals.Types.CaptureID.CaptureOrdinal
- Text.RE.ZeInternals.Types.CaptureID: instance GHC.Num.Num Text.RE.ZeInternals.Types.CaptureID.CaptureOrdinal
- Text.RE.ZeInternals.Types.CaptureID: instance GHC.Show.Show Text.RE.ZeInternals.Types.CaptureID.CaptureID
- Text.RE.ZeInternals.Types.CaptureID: instance GHC.Show.Show Text.RE.ZeInternals.Types.CaptureID.CaptureName
- Text.RE.ZeInternals.Types.CaptureID: instance GHC.Show.Show Text.RE.ZeInternals.Types.CaptureID.CaptureOrdinal
- Text.RE.ZeInternals.Types.CaptureID: newtype CaptureName
- Text.RE.ZeInternals.Types.CaptureID: newtype CaptureOrdinal
- Text.RE.ZeInternals.Types.CaptureID: noCaptureNames :: CaptureNames
- Text.RE.ZeInternals.Types.CaptureID: type CaptureNames = HashMap CaptureName CaptureOrdinal
- Text.RE.ZeInternals.Types.CaptureID: unsafeFindCaptureID :: CaptureID -> CaptureNames -> Int
- Text.RE.ZeInternals.Types.IsRegex: SearchReplace :: !re -> !s -> SearchReplace re s
- Text.RE.ZeInternals.Types.IsRegex: [getSearch] :: SearchReplace re s -> !re
- Text.RE.ZeInternals.Types.IsRegex: [getTemplate] :: SearchReplace re s -> !s
- Text.RE.ZeInternals.Types.IsRegex: class Replace s => IsRegex re s where makeRegex = makeRegexWith minBound makeSearchReplace = makeSearchReplaceWith minBound makeEscaped = makeEscapedWith minBound makeEscapedWith o f = makeRegexWith o . f . packR . escapeREString . unpackR
- Text.RE.ZeInternals.Types.IsRegex: data SearchReplace re s
- Text.RE.ZeInternals.Types.IsRegex: makeEscaped :: (IsRegex re s, Functor m, Monad m) => (s -> s) -> s -> m re
- Text.RE.ZeInternals.Types.IsRegex: makeEscapedWith :: (IsRegex re s, Functor m, Monad m) => SimpleREOptions -> (s -> s) -> s -> m re
- Text.RE.ZeInternals.Types.IsRegex: makeRegex :: (IsRegex re s, Functor m, Monad m) => s -> m re
- Text.RE.ZeInternals.Types.IsRegex: makeRegexWith :: (IsRegex re s, Functor m, Monad m) => SimpleREOptions -> s -> m re
- Text.RE.ZeInternals.Types.IsRegex: makeSearchReplace :: (IsRegex re s, Functor m, Monad m, IsRegex re s) => s -> s -> m (SearchReplace re s)
- Text.RE.ZeInternals.Types.IsRegex: makeSearchReplaceWith :: (IsRegex re s, Functor m, Monad m, IsRegex re s) => SimpleREOptions -> s -> s -> m (SearchReplace re s)
- Text.RE.ZeInternals.Types.IsRegex: matchMany :: IsRegex re s => re -> s -> Matches s
- Text.RE.ZeInternals.Types.IsRegex: matchOnce :: IsRegex re s => re -> s -> Match s
- Text.RE.ZeInternals.Types.IsRegex: regexSource :: IsRegex re s => re -> s
- Text.RE.ZeInternals.Types.IsRegex: searchReplaceAll :: IsRegex re s => SearchReplace re s -> s -> s
- Text.RE.ZeInternals.Types.IsRegex: searchReplaceFirst :: IsRegex re s => SearchReplace re s -> s -> s
- Text.RE.ZeInternals.Types.LineNo: ZeroBasedLineNo :: Int -> LineNo
- Text.RE.ZeInternals.Types.LineNo: [getZeroBasedLineNo] :: LineNo -> Int
- Text.RE.ZeInternals.Types.LineNo: firstLine :: LineNo
- Text.RE.ZeInternals.Types.LineNo: getLineNo :: LineNo -> Int
- Text.RE.ZeInternals.Types.LineNo: instance GHC.Enum.Enum Text.RE.ZeInternals.Types.LineNo.LineNo
- Text.RE.ZeInternals.Types.LineNo: instance GHC.Show.Show Text.RE.ZeInternals.Types.LineNo.LineNo
- Text.RE.ZeInternals.Types.LineNo: lineNo :: Int -> LineNo
- Text.RE.ZeInternals.Types.LineNo: newtype LineNo
- Text.RE.ZeInternals.Types.Match: (!$$) :: Match a -> CaptureID -> a
- Text.RE.ZeInternals.Types.Match: (!$$?) :: Match a -> CaptureID -> Maybe a
- Text.RE.ZeInternals.Types.Match: (!$) :: Match a -> CaptureID -> Capture a
- Text.RE.ZeInternals.Types.Match: (!$?) :: Match a -> CaptureID -> Maybe (Capture a)
- Text.RE.ZeInternals.Types.Match: Match :: !a -> !CaptureNames -> !(Array CaptureOrdinal (Capture a)) -> Match a
- Text.RE.ZeInternals.Types.Match: [captureNames] :: Match a -> !CaptureNames
- Text.RE.ZeInternals.Types.Match: [matchArray] :: Match a -> !(Array CaptureOrdinal (Capture a))
- Text.RE.ZeInternals.Types.Match: [matchSource] :: Match a -> !a
- Text.RE.ZeInternals.Types.Match: capture :: CaptureID -> Match a -> Capture a
- Text.RE.ZeInternals.Types.Match: captureMaybe :: CaptureID -> Match a -> Maybe (Capture a)
- Text.RE.ZeInternals.Types.Match: captureText :: CaptureID -> Match a -> a
- Text.RE.ZeInternals.Types.Match: captureTextMaybe :: CaptureID -> Match a -> Maybe a
- Text.RE.ZeInternals.Types.Match: convertMatchText :: source -> MatchText source -> Match source
- Text.RE.ZeInternals.Types.Match: data Match a
- Text.RE.ZeInternals.Types.Match: emptyMatchArray :: Array CaptureOrdinal (Capture a)
- Text.RE.ZeInternals.Types.Match: infixl 9 !$
- Text.RE.ZeInternals.Types.Match: instance (Text.Regex.Base.RegexLike.RegexContext regex source (Text.Regex.Base.RegexLike.AllTextSubmatches (GHC.Arr.Array GHC.Types.Int) (source, (GHC.Types.Int, GHC.Types.Int))), Text.Regex.Base.RegexLike.RegexLike regex source) => Text.Regex.Base.RegexLike.RegexContext regex source (Text.RE.ZeInternals.Types.Match.Match source)
- Text.RE.ZeInternals.Types.Match: instance GHC.Base.Functor Text.RE.ZeInternals.Types.Match.Match
- Text.RE.ZeInternals.Types.Match: instance GHC.Classes.Eq a => GHC.Classes.Eq (Text.RE.ZeInternals.Types.Match.Match a)
- Text.RE.ZeInternals.Types.Match: instance GHC.Show.Show a => GHC.Show.Show (Text.RE.ZeInternals.Types.Match.Match a)
- Text.RE.ZeInternals.Types.Match: matchCapture :: Match a -> Maybe (Capture a)
- Text.RE.ZeInternals.Types.Match: matchCaptures :: Match a -> Maybe (Capture a, [Capture a])
- Text.RE.ZeInternals.Types.Match: matched :: Match a -> Bool
- Text.RE.ZeInternals.Types.Match: matchedText :: Match a -> Maybe a
- Text.RE.ZeInternals.Types.Match: noMatch :: a -> Match a
- Text.RE.ZeInternals.Types.Matches: Matches :: !a -> ![Match a] -> Matches a
- Text.RE.ZeInternals.Types.Matches: [allMatches] :: Matches a -> ![Match a]
- Text.RE.ZeInternals.Types.Matches: [matchesSource] :: Matches a -> !a
- Text.RE.ZeInternals.Types.Matches: anyMatches :: Matches a -> Bool
- Text.RE.ZeInternals.Types.Matches: countMatches :: Matches a -> Int
- Text.RE.ZeInternals.Types.Matches: data Matches a
- Text.RE.ZeInternals.Types.Matches: instance (Text.Regex.Base.RegexLike.RegexContext regex source [Text.Regex.Base.RegexLike.MatchText source], Text.Regex.Base.RegexLike.RegexLike regex source) => Text.Regex.Base.RegexLike.RegexContext regex source (Text.RE.ZeInternals.Types.Matches.Matches source)
- Text.RE.ZeInternals.Types.Matches: instance GHC.Base.Functor Text.RE.ZeInternals.Types.Matches.Matches
- Text.RE.ZeInternals.Types.Matches: instance GHC.Classes.Eq a => GHC.Classes.Eq (Text.RE.ZeInternals.Types.Matches.Matches a)
- Text.RE.ZeInternals.Types.Matches: instance GHC.Show.Show a => GHC.Show.Show (Text.RE.ZeInternals.Types.Matches.Matches a)
- Text.RE.ZeInternals.Types.Matches: mainCaptures :: Matches a -> [Capture a]
- Text.RE.ZeInternals.Types.Matches: matches :: Matches a -> [a]
- Text.RE.ZeInternals.Types.SearchReplace: SearchReplace :: !re -> !s -> SearchReplace re s
- Text.RE.ZeInternals.Types.SearchReplace: [getSearch] :: SearchReplace re s -> !re
- Text.RE.ZeInternals.Types.SearchReplace: [getTemplate] :: SearchReplace re s -> !s
- Text.RE.ZeInternals.Types.SearchReplace: data SearchReplace re s
- Text.RE.ZeInternals.Types.SearchReplace: instance (GHC.Show.Show s, GHC.Show.Show re) => GHC.Show.Show (Text.RE.ZeInternals.Types.SearchReplace.SearchReplace re s)
- Text.RE.ZeInternals.Types.SearchReplace: instance GHC.Base.Functor (Text.RE.ZeInternals.Types.SearchReplace.SearchReplace re)
+ Text.RE.TDFA: class IsOption o
+ Text.RE.TDFA: compileRegexWithOptions :: (IsOption o, Functor m, Monad m) => o -> String -> m RE
+ Text.RE.TDFA: compileSearchReplaceWithOptions :: (Monad m, Functor m, IsRegex RE s) => REOptions -> String -> String -> m (SearchReplace RE s)
+ Text.RE.TDFA: cp :: QuasiQuoter
+ Text.RE.TDFA: defaultREOptions :: REOptions
+ Text.RE.TDFA: ed :: QuasiQuoter
+ Text.RE.TDFA: edBI :: QuasiQuoter
+ Text.RE.TDFA: edBS :: QuasiQuoter
+ Text.RE.TDFA: edBlockInsensitive :: QuasiQuoter
+ Text.RE.TDFA: edBlockSensitive :: QuasiQuoter
+ Text.RE.TDFA: edMI :: QuasiQuoter
+ Text.RE.TDFA: edMS :: QuasiQuoter
+ Text.RE.TDFA: edMultilineInsensitive :: QuasiQuoter
+ Text.RE.TDFA: edMultilineSensitive :: QuasiQuoter
+ Text.RE.TDFA: ed_ :: QuasiQuoter
+ Text.RE.TDFA: escapeWithOptions :: (IsOption o, Functor m, Monad m) => o -> (String -> String) -> String -> m RE
+ Text.RE.TDFA: makeREOptions :: IsOption o => o -> REOptions
+ Text.RE.TDFA: noPreludeREOptions :: REOptions
+ Text.RE.TDFA: prelude :: Macros RE
+ Text.RE.TDFA: preludeEnv :: MacroEnv
+ Text.RE.TDFA: preludeSource :: PreludeMacro -> String
+ Text.RE.TDFA: preludeSources :: String
+ Text.RE.TDFA: preludeSummary :: PreludeMacro -> String
+ Text.RE.TDFA: preludeTable :: String
+ Text.RE.TDFA: preludeTestsFailing :: [MacroID]
+ Text.RE.TDFA: re :: QuasiQuoter
+ Text.RE.TDFA: reBI :: QuasiQuoter
+ Text.RE.TDFA: reBS :: QuasiQuoter
+ Text.RE.TDFA: reBlockInsensitive :: QuasiQuoter
+ Text.RE.TDFA: reBlockSensitive :: QuasiQuoter
+ Text.RE.TDFA: reCaptureNames :: RE -> CaptureNames
+ Text.RE.TDFA: reMI :: QuasiQuoter
+ Text.RE.TDFA: reMS :: QuasiQuoter
+ Text.RE.TDFA: reMultilineInsensitive :: QuasiQuoter
+ Text.RE.TDFA: reMultilineSensitive :: QuasiQuoter
+ Text.RE.TDFA: reOptions :: RE -> REOptions
+ Text.RE.TDFA: reRegex :: RE -> Regex
+ Text.RE.TDFA: re_ :: QuasiQuoter
+ Text.RE.TDFA: regexType :: RegexType
+ Text.RE.TDFA: type REOptions = REOptions_ RE CompOption ExecOption
+ Text.RE.TDFA: unpackSimpleREOptions :: SimpleREOptions -> REOptions
+ Text.RE.TDFA.ByteString: cp :: QuasiQuoter
+ Text.RE.TDFA.ByteString: ed :: QuasiQuoter
+ Text.RE.TDFA.ByteString: edBI :: QuasiQuoter
+ Text.RE.TDFA.ByteString: edBS :: QuasiQuoter
+ Text.RE.TDFA.ByteString: edBlockInsensitive :: QuasiQuoter
+ Text.RE.TDFA.ByteString: edBlockSensitive :: QuasiQuoter
+ Text.RE.TDFA.ByteString: edMI :: QuasiQuoter
+ Text.RE.TDFA.ByteString: edMS :: QuasiQuoter
+ Text.RE.TDFA.ByteString: edMultilineInsensitive :: QuasiQuoter
+ Text.RE.TDFA.ByteString: edMultilineSensitive :: QuasiQuoter
+ Text.RE.TDFA.ByteString: ed_ :: QuasiQuoter
+ Text.RE.TDFA.ByteString: re :: QuasiQuoter
+ Text.RE.TDFA.ByteString: reBI :: QuasiQuoter
+ Text.RE.TDFA.ByteString: reBS :: QuasiQuoter
+ Text.RE.TDFA.ByteString: reBlockInsensitive :: QuasiQuoter
+ Text.RE.TDFA.ByteString: reBlockSensitive :: QuasiQuoter
+ Text.RE.TDFA.ByteString: reMI :: QuasiQuoter
+ Text.RE.TDFA.ByteString: reMS :: QuasiQuoter
+ Text.RE.TDFA.ByteString: reMultilineInsensitive :: QuasiQuoter
+ Text.RE.TDFA.ByteString: reMultilineSensitive :: QuasiQuoter
+ Text.RE.TDFA.ByteString: re_ :: QuasiQuoter
+ Text.RE.TDFA.ByteString.Lazy: cp :: QuasiQuoter
+ Text.RE.TDFA.ByteString.Lazy: ed :: QuasiQuoter
+ Text.RE.TDFA.ByteString.Lazy: edBI :: QuasiQuoter
+ Text.RE.TDFA.ByteString.Lazy: edBS :: QuasiQuoter
+ Text.RE.TDFA.ByteString.Lazy: edBlockInsensitive :: QuasiQuoter
+ Text.RE.TDFA.ByteString.Lazy: edBlockSensitive :: QuasiQuoter
+ Text.RE.TDFA.ByteString.Lazy: edMI :: QuasiQuoter
+ Text.RE.TDFA.ByteString.Lazy: edMS :: QuasiQuoter
+ Text.RE.TDFA.ByteString.Lazy: edMultilineInsensitive :: QuasiQuoter
+ Text.RE.TDFA.ByteString.Lazy: edMultilineSensitive :: QuasiQuoter
+ Text.RE.TDFA.ByteString.Lazy: ed_ :: QuasiQuoter
+ Text.RE.TDFA.ByteString.Lazy: re :: QuasiQuoter
+ Text.RE.TDFA.ByteString.Lazy: reBI :: QuasiQuoter
+ Text.RE.TDFA.ByteString.Lazy: reBS :: QuasiQuoter
+ Text.RE.TDFA.ByteString.Lazy: reBlockInsensitive :: QuasiQuoter
+ Text.RE.TDFA.ByteString.Lazy: reBlockSensitive :: QuasiQuoter
+ Text.RE.TDFA.ByteString.Lazy: reMI :: QuasiQuoter
+ Text.RE.TDFA.ByteString.Lazy: reMS :: QuasiQuoter
+ Text.RE.TDFA.ByteString.Lazy: reMultilineInsensitive :: QuasiQuoter
+ Text.RE.TDFA.ByteString.Lazy: reMultilineSensitive :: QuasiQuoter
+ Text.RE.TDFA.ByteString.Lazy: re_ :: QuasiQuoter
+ Text.RE.TDFA.Sequence: cp :: QuasiQuoter
+ Text.RE.TDFA.Sequence: ed :: QuasiQuoter
+ Text.RE.TDFA.Sequence: edBI :: QuasiQuoter
+ Text.RE.TDFA.Sequence: edBS :: QuasiQuoter
+ Text.RE.TDFA.Sequence: edBlockInsensitive :: QuasiQuoter
+ Text.RE.TDFA.Sequence: edBlockSensitive :: QuasiQuoter
+ Text.RE.TDFA.Sequence: edMI :: QuasiQuoter
+ Text.RE.TDFA.Sequence: edMS :: QuasiQuoter
+ Text.RE.TDFA.Sequence: edMultilineInsensitive :: QuasiQuoter
+ Text.RE.TDFA.Sequence: edMultilineSensitive :: QuasiQuoter
+ Text.RE.TDFA.Sequence: ed_ :: QuasiQuoter
+ Text.RE.TDFA.Sequence: re :: QuasiQuoter
+ Text.RE.TDFA.Sequence: reBI :: QuasiQuoter
+ Text.RE.TDFA.Sequence: reBS :: QuasiQuoter
+ Text.RE.TDFA.Sequence: reBlockInsensitive :: QuasiQuoter
+ Text.RE.TDFA.Sequence: reBlockSensitive :: QuasiQuoter
+ Text.RE.TDFA.Sequence: reMI :: QuasiQuoter
+ Text.RE.TDFA.Sequence: reMS :: QuasiQuoter
+ Text.RE.TDFA.Sequence: reMultilineInsensitive :: QuasiQuoter
+ Text.RE.TDFA.Sequence: reMultilineSensitive :: QuasiQuoter
+ Text.RE.TDFA.Sequence: re_ :: QuasiQuoter
+ Text.RE.TDFA.String: cp :: QuasiQuoter
+ Text.RE.TDFA.String: ed :: QuasiQuoter
+ Text.RE.TDFA.String: edBI :: QuasiQuoter
+ Text.RE.TDFA.String: edBS :: QuasiQuoter
+ Text.RE.TDFA.String: edBlockInsensitive :: QuasiQuoter
+ Text.RE.TDFA.String: edBlockSensitive :: QuasiQuoter
+ Text.RE.TDFA.String: edMI :: QuasiQuoter
+ Text.RE.TDFA.String: edMS :: QuasiQuoter
+ Text.RE.TDFA.String: edMultilineInsensitive :: QuasiQuoter
+ Text.RE.TDFA.String: edMultilineSensitive :: QuasiQuoter
+ Text.RE.TDFA.String: ed_ :: QuasiQuoter
+ Text.RE.TDFA.String: re :: QuasiQuoter
+ Text.RE.TDFA.String: reBI :: QuasiQuoter
+ Text.RE.TDFA.String: reBS :: QuasiQuoter
+ Text.RE.TDFA.String: reBlockInsensitive :: QuasiQuoter
+ Text.RE.TDFA.String: reBlockSensitive :: QuasiQuoter
+ Text.RE.TDFA.String: reMI :: QuasiQuoter
+ Text.RE.TDFA.String: reMS :: QuasiQuoter
+ Text.RE.TDFA.String: reMultilineInsensitive :: QuasiQuoter
+ Text.RE.TDFA.String: reMultilineSensitive :: QuasiQuoter
+ Text.RE.TDFA.String: re_ :: QuasiQuoter
+ Text.RE.TDFA.Text: cp :: QuasiQuoter
+ Text.RE.TDFA.Text: ed :: QuasiQuoter
+ Text.RE.TDFA.Text: edBI :: QuasiQuoter
+ Text.RE.TDFA.Text: edBS :: QuasiQuoter
+ Text.RE.TDFA.Text: edBlockInsensitive :: QuasiQuoter
+ Text.RE.TDFA.Text: edBlockSensitive :: QuasiQuoter
+ Text.RE.TDFA.Text: edMI :: QuasiQuoter
+ Text.RE.TDFA.Text: edMS :: QuasiQuoter
+ Text.RE.TDFA.Text: edMultilineInsensitive :: QuasiQuoter
+ Text.RE.TDFA.Text: edMultilineSensitive :: QuasiQuoter
+ Text.RE.TDFA.Text: ed_ :: QuasiQuoter
+ Text.RE.TDFA.Text: re :: QuasiQuoter
+ Text.RE.TDFA.Text: reBI :: QuasiQuoter
+ Text.RE.TDFA.Text: reBS :: QuasiQuoter
+ Text.RE.TDFA.Text: reBlockInsensitive :: QuasiQuoter
+ Text.RE.TDFA.Text: reBlockSensitive :: QuasiQuoter
+ Text.RE.TDFA.Text: reMI :: QuasiQuoter
+ Text.RE.TDFA.Text: reMS :: QuasiQuoter
+ Text.RE.TDFA.Text: reMultilineInsensitive :: QuasiQuoter
+ Text.RE.TDFA.Text: reMultilineSensitive :: QuasiQuoter
+ Text.RE.TDFA.Text: re_ :: QuasiQuoter
+ Text.RE.TDFA.Text.Lazy: cp :: QuasiQuoter
+ Text.RE.TDFA.Text.Lazy: ed :: QuasiQuoter
+ Text.RE.TDFA.Text.Lazy: edBI :: QuasiQuoter
+ Text.RE.TDFA.Text.Lazy: edBS :: QuasiQuoter
+ Text.RE.TDFA.Text.Lazy: edBlockInsensitive :: QuasiQuoter
+ Text.RE.TDFA.Text.Lazy: edBlockSensitive :: QuasiQuoter
+ Text.RE.TDFA.Text.Lazy: edMI :: QuasiQuoter
+ Text.RE.TDFA.Text.Lazy: edMS :: QuasiQuoter
+ Text.RE.TDFA.Text.Lazy: edMultilineInsensitive :: QuasiQuoter
+ Text.RE.TDFA.Text.Lazy: edMultilineSensitive :: QuasiQuoter
+ Text.RE.TDFA.Text.Lazy: ed_ :: QuasiQuoter
+ Text.RE.TDFA.Text.Lazy: re :: QuasiQuoter
+ Text.RE.TDFA.Text.Lazy: reBI :: QuasiQuoter
+ Text.RE.TDFA.Text.Lazy: reBS :: QuasiQuoter
+ Text.RE.TDFA.Text.Lazy: reBlockInsensitive :: QuasiQuoter
+ Text.RE.TDFA.Text.Lazy: reBlockSensitive :: QuasiQuoter
+ Text.RE.TDFA.Text.Lazy: reMI :: QuasiQuoter
+ Text.RE.TDFA.Text.Lazy: reMS :: QuasiQuoter
+ Text.RE.TDFA.Text.Lazy: reMultilineInsensitive :: QuasiQuoter
+ Text.RE.TDFA.Text.Lazy: reMultilineSensitive :: QuasiQuoter
+ Text.RE.TDFA.Text.Lazy: re_ :: QuasiQuoter
+ Text.RE.TestBench: data Match a
+ Text.RE.TestBench: mdRegexSource :: RegexType -> WithCaptures -> MacroEnv -> MacroDescriptor -> String
+ Text.RE.TestBench.Parsers: Alert :: Severity
+ Text.RE.TestBench.Parsers: Crit :: Severity
+ Text.RE.TestBench.Parsers: Debug :: Severity
+ Text.RE.TestBench.Parsers: Emerg :: Severity
+ Text.RE.TestBench.Parsers: Err :: Severity
+ Text.RE.TestBench.Parsers: Info :: Severity
+ Text.RE.TestBench.Parsers: Notice :: Severity
+ Text.RE.TestBench.Parsers: Warning :: Severity
+ Text.RE.TestBench.Parsers: data Severity
+ Text.RE.TestBench.Parsers: parseDate :: Replace a => a -> Maybe Day
+ Text.RE.TestBench.Parsers: parseDateTime :: Replace a => a -> Maybe UTCTime
+ Text.RE.TestBench.Parsers: parseDateTime8601 :: Replace a => a -> Maybe UTCTime
+ Text.RE.TestBench.Parsers: parseDateTimeCLF :: Replace a => a -> Maybe UTCTime
+ Text.RE.TestBench.Parsers: parseDouble :: Replace a => a -> Maybe Double
+ Text.RE.TestBench.Parsers: parseHex :: Replace a => a -> Maybe Int
+ Text.RE.TestBench.Parsers: parseIPv4Address :: Replace a => a -> Maybe IPV4Address
+ Text.RE.TestBench.Parsers: parseInteger :: Replace a => a -> Maybe Int
+ Text.RE.TestBench.Parsers: parseSeverity :: Replace a => a -> Maybe Severity
+ Text.RE.TestBench.Parsers: parseShortMonth :: Replace a => a -> Maybe Int
+ Text.RE.TestBench.Parsers: parseSimpleString :: Replace a => a -> Maybe Text
+ Text.RE.TestBench.Parsers: parseSlashesDate :: Replace a => a -> Maybe Day
+ Text.RE.TestBench.Parsers: parseString :: Replace a => a -> Maybe Text
+ Text.RE.TestBench.Parsers: parseTimeOfDay :: Replace a => a -> Maybe TimeOfDay
+ Text.RE.TestBench.Parsers: parseTimeZone :: Replace a => a -> Maybe TimeZone
+ Text.RE.TestBench.Parsers: severityKeywords :: Severity -> (Text, [Text])
+ Text.RE.TestBench.Parsers: shortMonthArray :: Array Int Text
+ Text.RE.TestBench.Parsers: type IPV4Address = (Word8, Word8, Word8, Word8)
+ Text.RE.Tools: SearchReplace :: !re -> !s -> SearchReplace re s
+ Text.RE.Tools: [getSearch] :: SearchReplace re s -> !re
+ Text.RE.Tools: [getTemplate] :: SearchReplace re s -> !s
+ Text.RE.Tools: data SearchReplace re s
+ Text.RE.Tools: searchReplaceAll :: IsRegex re s => SearchReplace re s -> s -> s
+ Text.RE.Tools: searchReplaceFirst :: IsRegex re s => SearchReplace re s -> s -> s
+ Text.RE.Tools.Edit: class Replace s => IsRegex re s where makeRegex = makeRegexWith minBound makeSearchReplace = makeSearchReplaceWith minBound makeEscaped = makeEscapedWith minBound makeEscapedWith o f = makeRegexWith o . f . packR . escapeREString . unpackR
+ Text.RE.Tools.Edit: makeEscaped :: (IsRegex re s, Functor m, Monad m) => (s -> s) -> s -> m re
+ Text.RE.Tools.Edit: makeEscapedWith :: (IsRegex re s, Functor m, Monad m) => SimpleREOptions -> (s -> s) -> s -> m re
+ Text.RE.Tools.Edit: makeRegex :: (IsRegex re s, Functor m, Monad m) => s -> m re
+ Text.RE.Tools.Edit: makeRegexWith :: (IsRegex re s, Functor m, Monad m) => SimpleREOptions -> s -> m re
+ Text.RE.Tools.Edit: makeSearchReplace :: (IsRegex re s, Functor m, Monad m, IsRegex re s) => s -> s -> m (SearchReplace re s)
+ Text.RE.Tools.Edit: makeSearchReplaceWith :: (IsRegex re s, Functor m, Monad m, IsRegex re s) => SimpleREOptions -> s -> s -> m (SearchReplace re s)
+ Text.RE.Tools.Edit: matchMany :: IsRegex re s => re -> s -> Matches s
+ Text.RE.Tools.Edit: matchOnce :: IsRegex re s => re -> s -> Match s
+ Text.RE.Tools.Edit: regexSource :: IsRegex re s => re -> s
+ Text.RE.Tools.Edit: searchReplaceAll :: IsRegex re s => SearchReplace re s -> s -> s
+ Text.RE.Tools.Edit: searchReplaceFirst :: IsRegex re s => SearchReplace re s -> s -> s
+ Text.RE.Tools.Find: SearchReplace :: !re -> !s -> SearchReplace re s
+ Text.RE.Tools.Find: [getSearch] :: SearchReplace re s -> !re
+ Text.RE.Tools.Find: [getTemplate] :: SearchReplace re s -> !s
+ Text.RE.Tools.Find: class Replace s => IsRegex re s where makeRegex = makeRegexWith minBound makeSearchReplace = makeSearchReplaceWith minBound makeEscaped = makeEscapedWith minBound makeEscapedWith o f = makeRegexWith o . f . packR . escapeREString . unpackR
+ Text.RE.Tools.Find: data SearchReplace re s
+ Text.RE.Tools.Find: makeEscaped :: (IsRegex re s, Functor m, Monad m) => (s -> s) -> s -> m re
+ Text.RE.Tools.Find: makeEscapedWith :: (IsRegex re s, Functor m, Monad m) => SimpleREOptions -> (s -> s) -> s -> m re
+ Text.RE.Tools.Find: makeRegex :: (IsRegex re s, Functor m, Monad m) => s -> m re
+ Text.RE.Tools.Find: makeRegexWith :: (IsRegex re s, Functor m, Monad m) => SimpleREOptions -> s -> m re
+ Text.RE.Tools.Find: makeSearchReplace :: (IsRegex re s, Functor m, Monad m, IsRegex re s) => s -> s -> m (SearchReplace re s)
+ Text.RE.Tools.Find: makeSearchReplaceWith :: (IsRegex re s, Functor m, Monad m, IsRegex re s) => SimpleREOptions -> s -> s -> m (SearchReplace re s)
+ Text.RE.Tools.Find: matchMany :: IsRegex re s => re -> s -> Matches s
+ Text.RE.Tools.Find: matchOnce :: IsRegex re s => re -> s -> Match s
+ Text.RE.Tools.Find: regexSource :: IsRegex re s => re -> s
+ Text.RE.Tools.Find: searchReplaceAll :: IsRegex re s => SearchReplace re s -> s -> s
+ Text.RE.Tools.Find: searchReplaceFirst :: IsRegex re s => SearchReplace re s -> s -> s
+ Text.RE.Tools.Grep: SearchReplace :: !re -> !s -> SearchReplace re s
+ Text.RE.Tools.Grep: [getSearch] :: SearchReplace re s -> !re
+ Text.RE.Tools.Grep: [getTemplate] :: SearchReplace re s -> !s
+ Text.RE.Tools.Grep: data SearchReplace re s
+ Text.RE.Tools.Grep: searchReplaceAll :: IsRegex re s => SearchReplace re s -> s -> s
+ Text.RE.Tools.Grep: searchReplaceFirst :: IsRegex re s => SearchReplace re s -> s -> s
+ Text.RE.Tools.IsRegex: SearchReplace :: !re -> !s -> SearchReplace re s
+ Text.RE.Tools.IsRegex: [getSearch] :: SearchReplace re s -> !re
+ Text.RE.Tools.IsRegex: [getTemplate] :: SearchReplace re s -> !s
+ Text.RE.Tools.IsRegex: class Replace s => IsRegex re s where makeRegex = makeRegexWith minBound makeSearchReplace = makeSearchReplaceWith minBound makeEscaped = makeEscapedWith minBound makeEscapedWith o f = makeRegexWith o . f . packR . escapeREString . unpackR
+ Text.RE.Tools.IsRegex: data SearchReplace re s
+ Text.RE.Tools.IsRegex: makeEscaped :: (IsRegex re s, Functor m, Monad m) => (s -> s) -> s -> m re
+ Text.RE.Tools.IsRegex: makeEscapedWith :: (IsRegex re s, Functor m, Monad m) => SimpleREOptions -> (s -> s) -> s -> m re
+ Text.RE.Tools.IsRegex: makeRegex :: (IsRegex re s, Functor m, Monad m) => s -> m re
+ Text.RE.Tools.IsRegex: makeRegexWith :: (IsRegex re s, Functor m, Monad m) => SimpleREOptions -> s -> m re
+ Text.RE.Tools.IsRegex: makeSearchReplace :: (IsRegex re s, Functor m, Monad m, IsRegex re s) => s -> s -> m (SearchReplace re s)
+ Text.RE.Tools.IsRegex: makeSearchReplaceWith :: (IsRegex re s, Functor m, Monad m, IsRegex re s) => SimpleREOptions -> s -> s -> m (SearchReplace re s)
+ Text.RE.Tools.IsRegex: matchMany :: IsRegex re s => re -> s -> Matches s
+ Text.RE.Tools.IsRegex: matchOnce :: IsRegex re s => re -> s -> Match s
+ Text.RE.Tools.IsRegex: regexSource :: IsRegex re s => re -> s
+ Text.RE.Tools.IsRegex: searchReplaceAll :: IsRegex re s => SearchReplace re s -> s -> s
+ Text.RE.Tools.IsRegex: searchReplaceFirst :: IsRegex re s => SearchReplace re s -> s -> s
+ Text.RE.Tools.Lex: SearchReplace :: !re -> !s -> SearchReplace re s
+ Text.RE.Tools.Lex: [getSearch] :: SearchReplace re s -> !re
+ Text.RE.Tools.Lex: [getTemplate] :: SearchReplace re s -> !s
+ Text.RE.Tools.Lex: data SearchReplace re s
+ Text.RE.Tools.Lex: searchReplaceAll :: IsRegex re s => SearchReplace re s -> s -> s
+ Text.RE.Tools.Lex: searchReplaceFirst :: IsRegex re s => SearchReplace re s -> s -> s
+ Text.RE.Tools.Sed: SearchReplace :: !re -> !s -> SearchReplace re s
+ Text.RE.Tools.Sed: [getSearch] :: SearchReplace re s -> !re
+ Text.RE.Tools.Sed: [getTemplate] :: SearchReplace re s -> !s
+ Text.RE.Tools.Sed: data SearchReplace re s
+ Text.RE.Tools.Sed: searchReplaceAll :: IsRegex re s => SearchReplace re s -> s -> s
+ Text.RE.Tools.Sed: searchReplaceFirst :: IsRegex re s => SearchReplace re s -> s -> s
+ Text.RE.ZeInternals: PM_address_ipv4 :: PreludeMacro
+ Text.RE.ZeInternals: PM_date :: PreludeMacro
+ Text.RE.ZeInternals: PM_date_slashes :: PreludeMacro
+ Text.RE.ZeInternals: PM_datetime :: PreludeMacro
+ Text.RE.ZeInternals: PM_datetime_8601 :: PreludeMacro
+ Text.RE.ZeInternals: PM_datetime_clf :: PreludeMacro
+ Text.RE.ZeInternals: PM_email_simple :: PreludeMacro
+ Text.RE.ZeInternals: PM_frac :: PreludeMacro
+ Text.RE.ZeInternals: PM_hex :: PreludeMacro
+ Text.RE.ZeInternals: PM_id :: PreludeMacro
+ Text.RE.ZeInternals: PM_id' :: PreludeMacro
+ Text.RE.ZeInternals: PM_id_ :: PreludeMacro
+ Text.RE.ZeInternals: PM_int :: PreludeMacro
+ Text.RE.ZeInternals: PM_nat :: PreludeMacro
+ Text.RE.ZeInternals: PM_shortmonth :: PreludeMacro
+ Text.RE.ZeInternals: PM_string :: PreludeMacro
+ Text.RE.ZeInternals: PM_string_simple :: PreludeMacro
+ Text.RE.ZeInternals: PM_syslog_severity :: PreludeMacro
+ Text.RE.ZeInternals: PM_time :: PreludeMacro
+ Text.RE.ZeInternals: PM_timezone :: PreludeMacro
+ Text.RE.ZeInternals: PM_url :: PreludeMacro
+ Text.RE.ZeInternals: QQFailure :: String -> String -> QQFailure
+ Text.RE.ZeInternals: [_qqf_component] :: QQFailure -> String
+ Text.RE.ZeInternals: [_qqf_context] :: QQFailure -> String
+ Text.RE.ZeInternals: addCaptureNames :: Typeable a => CaptureNames -> a -> a
+ Text.RE.ZeInternals: addCaptureNamesToMatch :: CaptureNames -> Match a -> Match a
+ Text.RE.ZeInternals: addCaptureNamesToMatches :: CaptureNames -> Matches a -> Matches a
+ Text.RE.ZeInternals: badMacros :: MacroEnv -> [MacroID]
+ Text.RE.ZeInternals: compileSearchAndReplace_ :: (Monad m, Functor m) => (String -> s) -> (String -> Either String re) -> String -> String -> m (SearchReplace re s)
+ Text.RE.ZeInternals: compileSearchReplace_ :: (Monad m, Functor m) => (String -> s) -> (String -> Either String re) -> String -> m (SearchReplace re s)
+ Text.RE.ZeInternals: cp :: QuasiQuoter
+ Text.RE.ZeInternals: data PreludeMacro
+ Text.RE.ZeInternals: data QQFailure
+ Text.RE.ZeInternals: data Token
+ Text.RE.ZeInternals: escapeREString :: String -> String
+ Text.RE.ZeInternals: expandMacros :: (r -> String) -> Macros r -> String -> String
+ Text.RE.ZeInternals: extractNamedCaptures :: String -> Either String ((Int, CaptureNames), String)
+ Text.RE.ZeInternals: formatTokens :: [Token] -> String
+ Text.RE.ZeInternals: formatTokens' :: FormatTokenREOptions -> [Token] -> String
+ Text.RE.ZeInternals: formatTokens0 :: [Token] -> String
+ Text.RE.ZeInternals: idFormatTokenREOptions :: FormatTokenREOptions
+ Text.RE.ZeInternals: mkPCRE :: TestBenchMatcher -> RegexType
+ Text.RE.ZeInternals: mkTDFA :: TestBenchMatcher -> RegexType
+ Text.RE.ZeInternals: preludeMacroEnv :: RegexType -> MacroEnv
+ Text.RE.ZeInternals: preludeMacroSource :: RegexType -> PreludeMacro -> String
+ Text.RE.ZeInternals: preludeMacroSources :: RegexType -> String
+ Text.RE.ZeInternals: preludeMacroSummary :: RegexType -> PreludeMacro -> String
+ Text.RE.ZeInternals: preludeMacroTable :: RegexType -> String
+ Text.RE.ZeInternals: preludeMacros :: (Monad m, Functor m) => (String -> m r) -> RegexType -> WithCaptures -> m (Macros r)
+ Text.RE.ZeInternals: presentPreludeMacro :: PreludeMacro -> String
+ Text.RE.ZeInternals: qq0 :: String -> QuasiQuoter
+ Text.RE.ZeInternals: scan :: String -> [Token]
+ Text.RE.ZeInternals: unsafeCompileSearchReplace_ :: (String -> s) -> (String -> Either String re) -> String -> SearchReplace re s
+ Text.RE.ZeInternals: validToken :: Token -> Bool
- Text.RE.Replace: findCaptureID :: CaptureID -> CaptureNames -> Either String Int
+ Text.RE.Replace: findCaptureID :: CaptureID -> CaptureNames -> Either String CaptureOrdinal
- Text.RE.TDFA.ByteString: (=~) :: (Typeable a, RegexContext Regex ByteString a, RegexMaker Regex CompOption ExecOption String) => ByteString -> RE -> a
+ Text.RE.TDFA.ByteString: (=~) :: (Typeable a, RegexContext Regex ByteString a) => ByteString -> RE -> a
- Text.RE.TDFA.ByteString: (=~~) :: (Monad m, Functor m, Typeable a, RegexContext Regex ByteString a, RegexMaker Regex CompOption ExecOption String) => ByteString -> RE -> m a
+ Text.RE.TDFA.ByteString: (=~~) :: (Monad m, Functor m, Typeable a, RegexContext Regex ByteString a) => ByteString -> RE -> m a
- Text.RE.TDFA.ByteString.Lazy: (=~) :: (Typeable a, RegexContext Regex ByteString a, RegexMaker Regex CompOption ExecOption String) => ByteString -> RE -> a
+ Text.RE.TDFA.ByteString.Lazy: (=~) :: (Typeable a, RegexContext Regex ByteString a) => ByteString -> RE -> a
- Text.RE.TDFA.ByteString.Lazy: (=~~) :: (Monad m, Functor m, Typeable a, RegexContext Regex ByteString a, RegexMaker Regex CompOption ExecOption String) => ByteString -> RE -> m a
+ Text.RE.TDFA.ByteString.Lazy: (=~~) :: (Monad m, Functor m, Typeable a, RegexContext Regex ByteString a) => ByteString -> RE -> m a
- Text.RE.TDFA.Sequence: (=~) :: (Typeable a, RegexContext Regex (Seq Char) a, RegexMaker Regex CompOption ExecOption String) => (Seq Char) -> RE -> a
+ Text.RE.TDFA.Sequence: (=~) :: (Typeable a, RegexContext Regex (Seq Char) a) => (Seq Char) -> RE -> a
- Text.RE.TDFA.Sequence: (=~~) :: (Monad m, Functor m, Typeable a, RegexContext Regex (Seq Char) a, RegexMaker Regex CompOption ExecOption String) => (Seq Char) -> RE -> m a
+ Text.RE.TDFA.Sequence: (=~~) :: (Monad m, Functor m, Typeable a, RegexContext Regex (Seq Char) a) => (Seq Char) -> RE -> m a
- Text.RE.TDFA.String: (=~) :: (Typeable a, RegexContext Regex String a, RegexMaker Regex CompOption ExecOption String) => String -> RE -> a
+ Text.RE.TDFA.String: (=~) :: (Typeable a, RegexContext Regex String a) => String -> RE -> a
- Text.RE.TDFA.String: (=~~) :: (Monad m, Functor m, Typeable a, RegexContext Regex String a, RegexMaker Regex CompOption ExecOption String) => String -> RE -> m a
+ Text.RE.TDFA.String: (=~~) :: (Monad m, Functor m, Typeable a, RegexContext Regex String a) => String -> RE -> m a
- Text.RE.TDFA.Text: (=~) :: (Typeable a, RegexContext Regex Text a, RegexMaker Regex CompOption ExecOption String) => Text -> RE -> a
+ Text.RE.TDFA.Text: (=~) :: (Typeable a, RegexContext Regex Text a) => Text -> RE -> a
- Text.RE.TDFA.Text: (=~~) :: (Monad m, Functor m, Typeable a, RegexContext Regex Text a, RegexMaker Regex CompOption ExecOption String) => Text -> RE -> m a
+ Text.RE.TDFA.Text: (=~~) :: (Monad m, Functor m, Typeable a, RegexContext Regex Text a) => Text -> RE -> m a
- Text.RE.TDFA.Text.Lazy: (=~) :: (Typeable a, RegexContext Regex Text a, RegexMaker Regex CompOption ExecOption String) => Text -> RE -> a
+ Text.RE.TDFA.Text.Lazy: (=~) :: (Typeable a, RegexContext Regex Text a) => Text -> RE -> a
- Text.RE.TDFA.Text.Lazy: (=~~) :: (Monad m, Functor m, Typeable a, RegexContext Regex Text a, RegexMaker Regex CompOption ExecOption String) => Text -> RE -> m a
+ Text.RE.TDFA.Text.Lazy: (=~~) :: (Monad m, Functor m, Typeable a, RegexContext Regex Text a) => Text -> RE -> m a
Files
- README.markdown +2/−2
- Text/RE.hs +1/−39
- Text/RE/REOptions.lhs +16/−3
- Text/RE/Replace.hs +20/−9
- Text/RE/Summa.hs +4/−4
- Text/RE/TDFA.hs +105/−21
- Text/RE/TDFA/ByteString.hs +60/−16
- Text/RE/TDFA/ByteString/Lazy.hs +60/−16
- Text/RE/TDFA/Sequence.hs +60/−16
- Text/RE/TDFA/String.hs +60/−16
- Text/RE/TDFA/Text.hs +60/−16
- Text/RE/TDFA/Text/Lazy.hs +60/−16
- Text/RE/TestBench.hs +16/−24
- Text/RE/TestBench/Parsers.hs +23/−0
- Text/RE/Tools.hs +16/−5
- Text/RE/Tools/Edit.lhs +29/−10
- Text/RE/Tools/Find.lhs +24/−4
- Text/RE/Tools/Grep.lhs +30/−5
- Text/RE/Tools/IsRegex.hs +17/−0
- Text/RE/Tools/Lex.hs +17/−4
- Text/RE/Tools/Sed.lhs +33/−10
- Text/RE/ZeInternals.hs +51/−8
- Text/RE/ZeInternals/NamedCaptures.lhs +6/−4
- Text/RE/ZeInternals/PreludeMacros.hs +2/−2
- Text/RE/ZeInternals/SearchReplace/TDFA/ByteString.hs +48/−36
- Text/RE/ZeInternals/SearchReplace/TDFA/ByteString/Lazy.hs +48/−36
- Text/RE/ZeInternals/SearchReplace/TDFA/Sequence.hs +48/−36
- Text/RE/ZeInternals/SearchReplace/TDFA/String.hs +48/−36
- Text/RE/ZeInternals/SearchReplace/TDFA/Text.hs +48/−36
- Text/RE/ZeInternals/SearchReplace/TDFA/Text/Lazy.hs +48/−36
- Text/RE/ZeInternals/SearchReplace/TDFAEdPrime.hs +2/−3
- Text/RE/ZeInternals/TDFA.hs +55/−44
- Text/RE/ZeInternals/Tools/Lex.lhs +2/−0
- Text/RE/ZeInternals/Types/CaptureID.hs +3/−7
- Text/RE/ZeInternals/Types/IsRegex.lhs +2/−0
- Text/RE/ZeInternals/Types/Match.lhs +8/−10
- Text/RE/ZeInternals/Types/Matches.lhs +3/−3
- Text/RE/ZeInternals/Types/SearchReplace.hs +0/−15
- Text/RE/ZeInternals/Types/SearchReplace.lhs +23/−0
- changelog +13/−1
- regex.cabal +7/−3
README.markdown view
@@ -12,7 +12,7 @@ * regular expression macros including: + a number of useful RE macros; + a test bench for testing and documenting new macro environments;- * built-in support for the TDFA and PCRE backends;+ * built-in support for the TDFA and PCRE back ends; * comprehensive documentation, tutorials and copious examples. @@ -78,7 +78,7 @@ ☒ 2017-04-04 v0.14.0.0 [Move IsOption, rename Find functions](https://github.com/iconnect/regex/milestone/18) - ☐ 2017-04-10 v1.0.0.0 [First stable release](https://github.com/iconnect/regex/milestone/3)+ ☒ 2017-04-10 v1.0.0.0 [First stable release](https://github.com/iconnect/regex/milestone/3) ☐ 2017-08-31 v2.0.0.0 [Fast text replacement with benchmarks](https://github.com/iconnect/regex/milestone/4)
Text/RE.hs view
@@ -17,36 +17,8 @@ -- * Further Use -- $further-- -- * The regex Foundational Types- -- ** Matches- Matches- , matchesSource- , allMatches- , anyMatches- , countMatches- , matches- -- ** Match- , Match- , matchSource- , matched- , matchedText-- -- * IsRegex- -- $isregex- , IsRegex(..)- , searchReplaceAll- , searchReplaceFirst- -- * IsRegex Instances- -- $instances- , module Text.RE.TDFA ) where -import Text.RE.TDFA()-import Text.RE.ZeInternals.Types.IsRegex-import Text.RE.ZeInternals.Types.Match-import Text.RE.ZeInternals.Types.Matches- -- $tutorial -- -- We have a regex tutorial at <http://tutorial.regex.uk>.@@ -91,17 +63,7 @@ -- For more specialist applications we have the following: -- -- * "Text.RE.REOptions" for specifying back-end specific options;--- * "Text.RE.Replace" for the full replace toolkit;+-- * "Text.RE.Replace" for the full text-replacement toolkit; -- * "Text.RE.TestBench" for building up, testing and doumenting; -- macro environments for use in REs; -- * "Text.RE.Tools" for an AWK-like text-processing toolkit.---- $isregex--- Class @IsRegex re t@ provides methods for matching the @t@ type for--- the @re@ back end as well as compiling REs from @t@ to @re@ and--- getting the source @t@ back again. The 'Replace' superclass of--- @IsRegex@ contains a useful toolkit for converting between @t@ and--- 'String' abd @Text@.---- $instances--- This module import just imports the @IsRegex TDFA s@ instances.
Text/RE/REOptions.lhs view
@@ -12,8 +12,12 @@ module Text.RE.REOptions (- -- * RE Options+ -- * The Options Tutorial+ -- $tutorial++ -- * 'SimpleREOptions' SimpleREOptions(..)+ -- * 'REOptions_' , REOptions_(..) -- * The Macro Tables , Macros@@ -60,7 +64,7 @@ -- and its @CompOption@ and @ExecOption@ types (the compile-time and -- execution time options, respectively); each back end will define an -- @REOptions@ type that fills out these three type parameters with the--- apropriate types (see, for example, "Text.RE.ZeInternals.TDFA")+-- apropriate types (see, for example, "Text.RE.TDFA") data REOptions_ r c e = REOptions { optionsMacs :: !(Macros r) -- ^ the available TestBench RE macros@@ -75,7 +79,7 @@ ---------------- \begin{code}--- | our macro tables are parameterised over the backend @RE@ type and+-- | our macro tables are parameterised over the back end @RE@ type and -- and just associate each @MacroID@ with an @RE@ (which may in turn -- contain macros to be expanded) type Macros r = HM.HashMap MacroID r@@ -99,4 +103,13 @@ -- | a macro table containing no entries emptyMacros :: Macros r emptyMacros = HM.empty+\end{code}+++\begin{code}+-- $tutorial+-- This API module provides the generic types used to specify the options+-- when compiling REs for each of the backl ends.+--+-- See the tutorials at http://re-tutorial-options.regex.uk \end{code}
Text/RE/Replace.hs view
@@ -1,11 +1,10 @@ module Text.RE.Replace (- -- * REContext and RELocation- REContext(..)- , RELocation(..)- , isTopLocation+ -- * The Replacing Tutorial+ -- $tutorial+ -- * replaceAll- , replaceAll+ replaceAll , replaceAllCaptures , replaceAllCaptures_ , replaceAllCapturesM@@ -14,10 +13,10 @@ , replaceCaptures , replaceCaptures_ , replaceCapturesM- -- * Replace and ReplaceMethods- , Replace(..)- , ReplaceMethods(..)- , replaceMethods+ -- * REContext and RELocation+ , REContext(..)+ , RELocation(..)+ , isTopLocation -- * Matches , Matches(..) , anyMatches@@ -53,6 +52,10 @@ , CaptureName(..) , CaptureOrdinal(..) , findCaptureID+ -- * Replace and ReplaceMethods+ , Replace(..)+ , ReplaceMethods(..)+ , replaceMethods ) where import Text.RE.ZeInternals.Replace@@ -60,3 +63,11 @@ import Text.RE.ZeInternals.Types.CaptureID import Text.RE.ZeInternals.Types.Match import Text.RE.ZeInternals.Types.Matches++-- $tutorial+-- This API module covers the specialised regex tools for doing general+-- editing on text, including the internal details of the 'Matches' and+-- 'Match' types and the associated functions for extracting captures+-- and applying functions to them to transform the subject text.+--+-- See the tutorials at http://re-tutorial-replacing.regex.uk
Text/RE/Summa.hs view
@@ -14,7 +14,7 @@ -- $collection -- -- This module collects together all of the generic regex APIs not--- exported by the back-end-specific API modules. The regex--- API is modular with only the most common types and functions being--- exported by these modules but the remaining modules may be imported--- en masse by importing this module.+-- exported by the principal API modules, specialised for each back end+-- and text type. The regex API is modular with only the most common types+-- and functions being exported by these modules but the remaining modules+-- may be imported en masse by importing this module.
Text/RE/TDFA.hs view
@@ -14,50 +14,96 @@ -- * About this Module -- $about - -- * The Match Operators+ -- * The 'Matches' and 'Match' Operators (*=~) , (?=~)- -- * The SearchReplace Operators+ -- * The 'SearchReplace' Operators , (*=~/) , (?=~/)- -- * Matches+ -- * The 'Matches' Type , Matches , matchesSource , allMatches , anyMatches , countMatches , matches- -- * Match+ -- * The 'Match' Type , Match , matchSource , matched , matchedText+ -- * The Macros and Parsers+ -- $macros+ , module Text.RE.TestBench.Parsers -- * The 'RE' Type , RE+ , regexType+ , reOptions , reSource+ , reCaptureNames+ , reRegex -- * Options -- $options , SimpleREOptions(..)+ , IsOption(..)+ , REOptions+ , defaultREOptions+ , noPreludeREOptions+ , unpackSimpleREOptions -- * Compiling and Escaping REs , SearchReplace(..) , compileRegex , compileRegexWith+ , compileRegexWithOptions , compileSearchReplace , compileSearchReplaceWith+ , compileSearchReplaceWithOptions , escape , escapeWith+ , escapeWithOptions , escapeREString- -- * The Classic rexex-base Match Operators+ -- * The Classic regex-base Match Operators , (=~) , (=~~)- -- * IsRegex- , IsRegex(..)- -- * The Quasi Quoters and Minor Functions+ -- * The re Quasi Quoters -- $re- , module Text.RE.ZeInternals.TDFA+ , re+ , reMultilineSensitive+ , reMultilineInsensitive+ , reBlockSensitive+ , reBlockInsensitive+ , reMS+ , reMI+ , reBS+ , reBI+ , re_+ -- * The Ed Quasi Quoters -- $ed- , module Text.RE.ZeInternals.SearchReplace.TDFA- -- * The Operator Instances+ , ed+ , edMultilineSensitive+ , edMultilineInsensitive+ , edBlockSensitive+ , edBlockInsensitive+ , edMS+ , edMI+ , edBS+ , edBI+ , ed_+ -- * The cp Quasi Quoters+ , cp+ -- * RE Macros Standard Environment+ -- $prelude+ , prelude+ , preludeEnv+ , preludeTestsFailing+ , preludeTable+ , preludeSummary+ , preludeSources+ , preludeSource+ -- * IsRegex+ -- $isregex+ , module Text.RE.Tools.IsRegex+ -- * The IsRegex Instances -- $instances , module Text.RE.TDFA.ByteString , module Text.RE.TDFA.ByteString.Lazy@@ -68,18 +114,18 @@ ) where import Text.RE.REOptions+import Text.RE.Replace import Text.RE.TDFA.ByteString() import Text.RE.TDFA.ByteString.Lazy() import Text.RE.TDFA.Sequence() import Text.RE.TDFA.String() import Text.RE.TDFA.Text() import Text.RE.TDFA.Text.Lazy()-import Text.RE.ZeInternals.AddCaptureNames+import Text.RE.TestBench.Parsers+import Text.RE.Tools.IsRegex+import Text.RE.ZeInternals import Text.RE.ZeInternals.SearchReplace.TDFA import Text.RE.ZeInternals.TDFA-import Text.RE.ZeInternals.Types.IsRegex-import Text.RE.ZeInternals.Types.Match-import Text.RE.ZeInternals.Types.Matches import qualified Text.Regex.Base as B import qualified Text.Regex.TDFA as TDFA @@ -144,26 +190,64 @@ -- $about -- This module provides access to the back end through polymorphic functions -- that operate over all of the String\/Text\/ByteString types supported by the--- back end. If you don't need this generality then you might want to consider--- using one of the modules that have been specialised for each of these types:+-- back end. The module also provides all of the specialised back-end functionality+-- that will not be needed by most regex clientts. If you don't need this generality+-- then you might want to consider using one of the simpler modules that have been+-- specialised for each of these types: -- -- * "Text.RE.TDFA.ByteString" -- * "Text.RE.TDFA.ByteString.Lazy"--- * "Text.RE.ZeInternals.TDFA" -- * "Text.RE.TDFA.Sequence" -- * "Text.RE.TDFA.String" -- * "Text.RE.TDFA.Text" -- * "Text.RE.TDFA.Text.Lazy" +-- $macros+-- There are a number of RE macros and corresponding Haskell parsers+-- for parsing the matched text into appropriate Haskell types. See+-- the [Macros Tables](http://regex.uk/macros) for details.++-- $options+-- You can specify different compilation options by appending a+-- to the name of an [re| ... |] or [ed| ... \/\/\/ ... |] quasi quoter+-- to select the corresponding compilation option. For example, the+-- section,+--+-- @(?=~/ [edBlockInsensitive|foo$\/\/\/bar|])@+--+-- will replace a @foo@ suffix of the argument text, of any+-- capitalisation, with a (lower case) @bar@. If you need to specify the+-- options dynamically, use the @[re_| ... |]@ and @[ed_| ... \/\/\/ ... |]@+-- quasi quoters, which generate functions that take an 'IsOption' option+-- (e.g., a 'SimpleReOptions' value) and yields a 'RE' or 'SearchReplace'+-- as apropriate. For example if you have a 'SimpleReOptions' value in+-- @sro@ then+--+-- @(?=~/ [ed_|foo$\/\/\/bar|] sro)@+--+-- will compile the @foo$@ RE according to the value of @sro@. For more+-- on specifying RE options see "Text.RE.REOptions".+ -- $re -- The @[re|.*|]@ quasi quoters, with variants for specifing different -- options to the RE compiler (see "Text.RE.REOptions"), and the -- specialised back-end types and functions. -- $ed--- The @[ed|.*\/\/\/foo|]@ quasi quoters, with variants for specifing different--- options to the RE compiler (see "Text.RE.REOptions").+-- The -- | the @[ed| ... \/\/\/ ... |]@ quasi quoters; for example,+--+-- @[ed|${y}([0-9]{4})-0*${m}([0-9]{2})-0*${d}([0-9]{2})\/\/\/${d}\/${m}\/${y}|])@+--+-- represents a @SearchReplace@ that will convert a YYYY-MM-DD format date+-- into a DD\/MM\/YYYY format date.+--+-- The only difference betweem these quasi quoters is the RE options that are set,+-- using the same conventions as the @[re| ... |]@ quasi quoters. +-- $isregex+-- The 'IsRegex' class is used to abstact over the different regex back ends and+-- the text types they work with -- see "Text.RE.Tools.IsRegex" for details.+ -- $instances ----- These modules merely provide the 'IsRegex' instances.+-- These module exports merely provide the 'IsRegex' instances.
Text/RE/TDFA/ByteString.hs view
@@ -20,18 +20,21 @@ -- * The 'SearchReplace' Operators , (*=~/) , (?=~/)- -- * Matches+ -- * The 'Matches' Type , Matches , matchesSource , allMatches , anyMatches , countMatches , matches- -- * Match+ -- * The 'Match' Type , Match , matchSource , matched , matchedText+ -- * The Macros and Parsers+ -- $macros+ , module Text.RE.TestBench.Parsers -- * The 'RE' Type , RE , reSource@@ -47,16 +50,38 @@ , escape , escapeWith , escapeREString- -- * The Classic rexex-base Match Operators+ -- * The Classic regex-base Match Operators , (=~) , (=~~)- -- * IsRegex- , IsRegex(..)- -- * The Quasi Quoters and Minor Functions+ -- * The re Quasi Quoters -- $re- , module Text.RE.ZeInternals.TDFA+ , re+ , reMultilineSensitive+ , reMultilineInsensitive+ , reBlockSensitive+ , reBlockInsensitive+ , reMS+ , reMI+ , reBS+ , reBI+ , re_+ -- * The Ed Quasi Quoters -- $ed- , module Text.RE.ZeInternals.SearchReplace.TDFA.ByteString+ , edMultilineSensitive+ , edMultilineInsensitive+ , edBlockSensitive+ , edBlockInsensitive+ , ed+ , edMS+ , edMI+ , edBS+ , edBI+ , ed_+ -- * The cp Quasi Quoters+ , cp+ -- * IsRegex+ -- $isregex+ , module Text.RE.Tools.IsRegex ) where import qualified Data.ByteString as B@@ -64,10 +89,11 @@ import Prelude.Compat import Text.RE.REOptions import Text.RE.Replace-import Text.RE.ZeInternals.AddCaptureNames+import Text.RE.TestBench.Parsers+import Text.RE.Tools.IsRegex+import Text.RE.ZeInternals import Text.RE.ZeInternals.SearchReplace.TDFA.ByteString import Text.RE.ZeInternals.TDFA-import Text.RE.ZeInternals.Types.IsRegex import Text.Regex.Base import qualified Text.Regex.TDFA as TDFA @@ -102,7 +128,7 @@ (*=~/) = flip searchReplaceAll -- | search and replace the first occurrence only (if any) in the input text--- e.g., to prefix the first string of four hex digits in the imput text,+-- e.g., to prefix the first string of four hex digits in the input text, -- if any, with @0x@: -- -- @(?=~\/ [ed|[0-9A-Fa-f]{4}\/\/\/0x$0|])@@@ -110,22 +136,20 @@ (?=~/) :: B.ByteString -> SearchReplace RE B.ByteString -> B.ByteString (?=~/) = flip searchReplaceFirst --- | the regex-base polymorphic match operator+-- | the `regex-base` polymorphic match operator (=~) :: ( Typeable a , RegexContext TDFA.Regex B.ByteString a- , RegexMaker TDFA.Regex TDFA.CompOption TDFA.ExecOption String ) => B.ByteString -> RE -> a (=~) bs rex = addCaptureNames (reCaptureNames rex) $ match (reRegex rex) bs --- | the regex-base monadic, polymorphic match operator+-- | the `regex-base` monadic, polymorphic match operator (=~~) :: ( Monad m , Functor m , Typeable a , RegexContext TDFA.Regex B.ByteString a- , RegexMaker TDFA.Regex TDFA.CompOption TDFA.ExecOption String ) => B.ByteString -> RE@@ -142,6 +166,11 @@ -- $tutorial -- We have a regex tutorial at <http://tutorial.regex.uk>. +-- $macros+-- There are a number of RE macros and corresponding Haskell parsers+-- for parsing the matched text into appropriate Haskell types. See+-- the [Macros Tables](http://regex.uk/macros) for details.+ -- $options -- You can specify different compilation options by appending a -- to the name of an [re| ... |] or [ed| ... \/\/\/ ... |] quasi quoter@@ -152,7 +181,7 @@ -- -- will replace a @foo@ suffix of the argument text, of any -- capitalisation, with a (lower case) @bar@. If you need to specify the--- options dynamically, use the @[re_| ... |]@ and @[red_| ... \/\/\/ ... |]@+-- options dynamically, use the @[re_| ... |]@ and @[ed_| ... \/\/\/ ... |]@ -- quasi quoters, which generate functions that take an 'IsOption' option -- (e.g., a 'SimpleReOptions' value) and yields a 'RE' or 'SearchReplace' -- as apropriate. For example if you have a 'SimpleReOptions' value in@@ -171,3 +200,18 @@ -- $ed -- The @[ed|.*\/\/\/foo|]@ quasi quoters, with variants for specifing different -- options to the RE compiler (see "Text.RE.REOptions").++-- $ed+-- The -- | the @[ed| ... \/\/\/ ... |]@ quasi quoters; for example,+--+-- @[ed|${y}([0-9]{4})-0*${m}([0-9]{2})-0*${d}([0-9]{2})\/\/\/${d}\/${m}\/${y}|])@+--+-- represents a @SearchReplace@ that will convert a YYYY-MM-DD format date+-- into a DD\/MM\/YYYY format date.+--+-- The only difference betweem these quasi quoters is the RE options that are set,+-- using the same conventions as the @[re| ... |]@ quasi quoters.++-- $isregex+-- The 'IsRegex' class is used to abstact over the different regex back ends and+-- the text types they work with -- see "Text.RE.Tools.IsRegex" for details.
Text/RE/TDFA/ByteString/Lazy.hs view
@@ -20,18 +20,21 @@ -- * The 'SearchReplace' Operators , (*=~/) , (?=~/)- -- * Matches+ -- * The 'Matches' Type , Matches , matchesSource , allMatches , anyMatches , countMatches , matches- -- * Match+ -- * The 'Match' Type , Match , matchSource , matched , matchedText+ -- * The Macros and Parsers+ -- $macros+ , module Text.RE.TestBench.Parsers -- * The 'RE' Type , RE , reSource@@ -47,16 +50,38 @@ , escape , escapeWith , escapeREString- -- * The Classic rexex-base Match Operators+ -- * The Classic regex-base Match Operators , (=~) , (=~~)- -- * IsRegex- , IsRegex(..)- -- * The Quasi Quoters and Minor Functions+ -- * The re Quasi Quoters -- $re- , module Text.RE.ZeInternals.TDFA+ , re+ , reMultilineSensitive+ , reMultilineInsensitive+ , reBlockSensitive+ , reBlockInsensitive+ , reMS+ , reMI+ , reBS+ , reBI+ , re_+ -- * The Ed Quasi Quoters -- $ed- , module Text.RE.ZeInternals.SearchReplace.TDFA.ByteString.Lazy+ , edMultilineSensitive+ , edMultilineInsensitive+ , edBlockSensitive+ , edBlockInsensitive+ , ed+ , edMS+ , edMI+ , edBS+ , edBI+ , ed_+ -- * The cp Quasi Quoters+ , cp+ -- * IsRegex+ -- $isregex+ , module Text.RE.Tools.IsRegex ) where import qualified Data.ByteString.Lazy.Char8 as LBS@@ -64,10 +89,11 @@ import Prelude.Compat import Text.RE.REOptions import Text.RE.Replace-import Text.RE.ZeInternals.AddCaptureNames+import Text.RE.TestBench.Parsers+import Text.RE.Tools.IsRegex+import Text.RE.ZeInternals import Text.RE.ZeInternals.SearchReplace.TDFA.ByteString.Lazy import Text.RE.ZeInternals.TDFA-import Text.RE.ZeInternals.Types.IsRegex import Text.Regex.Base import qualified Text.Regex.TDFA as TDFA @@ -102,7 +128,7 @@ (*=~/) = flip searchReplaceAll -- | search and replace the first occurrence only (if any) in the input text--- e.g., to prefix the first string of four hex digits in the imput text,+-- e.g., to prefix the first string of four hex digits in the input text, -- if any, with @0x@: -- -- @(?=~\/ [ed|[0-9A-Fa-f]{4}\/\/\/0x$0|])@@@ -110,22 +136,20 @@ (?=~/) :: LBS.ByteString -> SearchReplace RE LBS.ByteString -> LBS.ByteString (?=~/) = flip searchReplaceFirst --- | the regex-base polymorphic match operator+-- | the `regex-base` polymorphic match operator (=~) :: ( Typeable a , RegexContext TDFA.Regex LBS.ByteString a- , RegexMaker TDFA.Regex TDFA.CompOption TDFA.ExecOption String ) => LBS.ByteString -> RE -> a (=~) bs rex = addCaptureNames (reCaptureNames rex) $ match (reRegex rex) bs --- | the regex-base monadic, polymorphic match operator+-- | the `regex-base` monadic, polymorphic match operator (=~~) :: ( Monad m , Functor m , Typeable a , RegexContext TDFA.Regex LBS.ByteString a- , RegexMaker TDFA.Regex TDFA.CompOption TDFA.ExecOption String ) => LBS.ByteString -> RE@@ -142,6 +166,11 @@ -- $tutorial -- We have a regex tutorial at <http://tutorial.regex.uk>. +-- $macros+-- There are a number of RE macros and corresponding Haskell parsers+-- for parsing the matched text into appropriate Haskell types. See+-- the [Macros Tables](http://regex.uk/macros) for details.+ -- $options -- You can specify different compilation options by appending a -- to the name of an [re| ... |] or [ed| ... \/\/\/ ... |] quasi quoter@@ -152,7 +181,7 @@ -- -- will replace a @foo@ suffix of the argument text, of any -- capitalisation, with a (lower case) @bar@. If you need to specify the--- options dynamically, use the @[re_| ... |]@ and @[red_| ... \/\/\/ ... |]@+-- options dynamically, use the @[re_| ... |]@ and @[ed_| ... \/\/\/ ... |]@ -- quasi quoters, which generate functions that take an 'IsOption' option -- (e.g., a 'SimpleReOptions' value) and yields a 'RE' or 'SearchReplace' -- as apropriate. For example if you have a 'SimpleReOptions' value in@@ -171,3 +200,18 @@ -- $ed -- The @[ed|.*\/\/\/foo|]@ quasi quoters, with variants for specifing different -- options to the RE compiler (see "Text.RE.REOptions").++-- $ed+-- The -- | the @[ed| ... \/\/\/ ... |]@ quasi quoters; for example,+--+-- @[ed|${y}([0-9]{4})-0*${m}([0-9]{2})-0*${d}([0-9]{2})\/\/\/${d}\/${m}\/${y}|])@+--+-- represents a @SearchReplace@ that will convert a YYYY-MM-DD format date+-- into a DD\/MM\/YYYY format date.+--+-- The only difference betweem these quasi quoters is the RE options that are set,+-- using the same conventions as the @[re| ... |]@ quasi quoters.++-- $isregex+-- The 'IsRegex' class is used to abstact over the different regex back ends and+-- the text types they work with -- see "Text.RE.Tools.IsRegex" for details.
Text/RE/TDFA/Sequence.hs view
@@ -20,18 +20,21 @@ -- * The 'SearchReplace' Operators , (*=~/) , (?=~/)- -- * Matches+ -- * The 'Matches' Type , Matches , matchesSource , allMatches , anyMatches , countMatches , matches- -- * Match+ -- * The 'Match' Type , Match , matchSource , matched , matchedText+ -- * The Macros and Parsers+ -- $macros+ , module Text.RE.TestBench.Parsers -- * The 'RE' Type , RE , reSource@@ -47,16 +50,38 @@ , escape , escapeWith , escapeREString- -- * The Classic rexex-base Match Operators+ -- * The Classic regex-base Match Operators , (=~) , (=~~)- -- * IsRegex- , IsRegex(..)- -- * The Quasi Quoters and Minor Functions+ -- * The re Quasi Quoters -- $re- , module Text.RE.ZeInternals.TDFA+ , re+ , reMultilineSensitive+ , reMultilineInsensitive+ , reBlockSensitive+ , reBlockInsensitive+ , reMS+ , reMI+ , reBS+ , reBI+ , re_+ -- * The Ed Quasi Quoters -- $ed- , module Text.RE.ZeInternals.SearchReplace.TDFA.Sequence+ , edMultilineSensitive+ , edMultilineInsensitive+ , edBlockSensitive+ , edBlockInsensitive+ , ed+ , edMS+ , edMI+ , edBS+ , edBI+ , ed_+ -- * The cp Quasi Quoters+ , cp+ -- * IsRegex+ -- $isregex+ , module Text.RE.Tools.IsRegex ) where import qualified Data.Sequence as S@@ -64,10 +89,11 @@ import Prelude.Compat import Text.RE.REOptions import Text.RE.Replace-import Text.RE.ZeInternals.AddCaptureNames+import Text.RE.TestBench.Parsers+import Text.RE.Tools.IsRegex+import Text.RE.ZeInternals import Text.RE.ZeInternals.SearchReplace.TDFA.Sequence import Text.RE.ZeInternals.TDFA-import Text.RE.ZeInternals.Types.IsRegex import Text.Regex.Base import qualified Text.Regex.TDFA as TDFA @@ -102,7 +128,7 @@ (*=~/) = flip searchReplaceAll -- | search and replace the first occurrence only (if any) in the input text--- e.g., to prefix the first string of four hex digits in the imput text,+-- e.g., to prefix the first string of four hex digits in the input text, -- if any, with @0x@: -- -- @(?=~\/ [ed|[0-9A-Fa-f]{4}\/\/\/0x$0|])@@@ -110,22 +136,20 @@ (?=~/) :: (S.Seq Char) -> SearchReplace RE (S.Seq Char) -> (S.Seq Char) (?=~/) = flip searchReplaceFirst --- | the regex-base polymorphic match operator+-- | the `regex-base` polymorphic match operator (=~) :: ( Typeable a , RegexContext TDFA.Regex (S.Seq Char) a- , RegexMaker TDFA.Regex TDFA.CompOption TDFA.ExecOption String ) => (S.Seq Char) -> RE -> a (=~) bs rex = addCaptureNames (reCaptureNames rex) $ match (reRegex rex) bs --- | the regex-base monadic, polymorphic match operator+-- | the `regex-base` monadic, polymorphic match operator (=~~) :: ( Monad m , Functor m , Typeable a , RegexContext TDFA.Regex (S.Seq Char) a- , RegexMaker TDFA.Regex TDFA.CompOption TDFA.ExecOption String ) => (S.Seq Char) -> RE@@ -142,6 +166,11 @@ -- $tutorial -- We have a regex tutorial at <http://tutorial.regex.uk>. +-- $macros+-- There are a number of RE macros and corresponding Haskell parsers+-- for parsing the matched text into appropriate Haskell types. See+-- the [Macros Tables](http://regex.uk/macros) for details.+ -- $options -- You can specify different compilation options by appending a -- to the name of an [re| ... |] or [ed| ... \/\/\/ ... |] quasi quoter@@ -152,7 +181,7 @@ -- -- will replace a @foo@ suffix of the argument text, of any -- capitalisation, with a (lower case) @bar@. If you need to specify the--- options dynamically, use the @[re_| ... |]@ and @[red_| ... \/\/\/ ... |]@+-- options dynamically, use the @[re_| ... |]@ and @[ed_| ... \/\/\/ ... |]@ -- quasi quoters, which generate functions that take an 'IsOption' option -- (e.g., a 'SimpleReOptions' value) and yields a 'RE' or 'SearchReplace' -- as apropriate. For example if you have a 'SimpleReOptions' value in@@ -171,3 +200,18 @@ -- $ed -- The @[ed|.*\/\/\/foo|]@ quasi quoters, with variants for specifing different -- options to the RE compiler (see "Text.RE.REOptions").++-- $ed+-- The -- | the @[ed| ... \/\/\/ ... |]@ quasi quoters; for example,+--+-- @[ed|${y}([0-9]{4})-0*${m}([0-9]{2})-0*${d}([0-9]{2})\/\/\/${d}\/${m}\/${y}|])@+--+-- represents a @SearchReplace@ that will convert a YYYY-MM-DD format date+-- into a DD\/MM\/YYYY format date.+--+-- The only difference betweem these quasi quoters is the RE options that are set,+-- using the same conventions as the @[re| ... |]@ quasi quoters.++-- $isregex+-- The 'IsRegex' class is used to abstact over the different regex back ends and+-- the text types they work with -- see "Text.RE.Tools.IsRegex" for details.
Text/RE/TDFA/String.hs view
@@ -20,18 +20,21 @@ -- * The 'SearchReplace' Operators , (*=~/) , (?=~/)- -- * Matches+ -- * The 'Matches' Type , Matches , matchesSource , allMatches , anyMatches , countMatches , matches- -- * Match+ -- * The 'Match' Type , Match , matchSource , matched , matchedText+ -- * The Macros and Parsers+ -- $macros+ , module Text.RE.TestBench.Parsers -- * The 'RE' Type , RE , reSource@@ -47,16 +50,38 @@ , escape , escapeWith , escapeREString- -- * The Classic rexex-base Match Operators+ -- * The Classic regex-base Match Operators , (=~) , (=~~)- -- * IsRegex- , IsRegex(..)- -- * The Quasi Quoters and Minor Functions+ -- * The re Quasi Quoters -- $re- , module Text.RE.ZeInternals.TDFA+ , re+ , reMultilineSensitive+ , reMultilineInsensitive+ , reBlockSensitive+ , reBlockInsensitive+ , reMS+ , reMI+ , reBS+ , reBI+ , re_+ -- * The Ed Quasi Quoters -- $ed- , module Text.RE.ZeInternals.SearchReplace.TDFA.String+ , edMultilineSensitive+ , edMultilineInsensitive+ , edBlockSensitive+ , edBlockInsensitive+ , ed+ , edMS+ , edMI+ , edBS+ , edBI+ , ed_+ -- * The cp Quasi Quoters+ , cp+ -- * IsRegex+ -- $isregex+ , module Text.RE.Tools.IsRegex ) where @@ -64,10 +89,11 @@ import Prelude.Compat import Text.RE.REOptions import Text.RE.Replace-import Text.RE.ZeInternals.AddCaptureNames+import Text.RE.TestBench.Parsers+import Text.RE.Tools.IsRegex+import Text.RE.ZeInternals import Text.RE.ZeInternals.SearchReplace.TDFA.String import Text.RE.ZeInternals.TDFA-import Text.RE.ZeInternals.Types.IsRegex import Text.Regex.Base import qualified Text.Regex.TDFA as TDFA @@ -102,7 +128,7 @@ (*=~/) = flip searchReplaceAll -- | search and replace the first occurrence only (if any) in the input text--- e.g., to prefix the first string of four hex digits in the imput text,+-- e.g., to prefix the first string of four hex digits in the input text, -- if any, with @0x@: -- -- @(?=~\/ [ed|[0-9A-Fa-f]{4}\/\/\/0x$0|])@@@ -110,22 +136,20 @@ (?=~/) :: String -> SearchReplace RE String -> String (?=~/) = flip searchReplaceFirst --- | the regex-base polymorphic match operator+-- | the `regex-base` polymorphic match operator (=~) :: ( Typeable a , RegexContext TDFA.Regex String a- , RegexMaker TDFA.Regex TDFA.CompOption TDFA.ExecOption String ) => String -> RE -> a (=~) bs rex = addCaptureNames (reCaptureNames rex) $ match (reRegex rex) bs --- | the regex-base monadic, polymorphic match operator+-- | the `regex-base` monadic, polymorphic match operator (=~~) :: ( Monad m , Functor m , Typeable a , RegexContext TDFA.Regex String a- , RegexMaker TDFA.Regex TDFA.CompOption TDFA.ExecOption String ) => String -> RE@@ -142,6 +166,11 @@ -- $tutorial -- We have a regex tutorial at <http://tutorial.regex.uk>. +-- $macros+-- There are a number of RE macros and corresponding Haskell parsers+-- for parsing the matched text into appropriate Haskell types. See+-- the [Macros Tables](http://regex.uk/macros) for details.+ -- $options -- You can specify different compilation options by appending a -- to the name of an [re| ... |] or [ed| ... \/\/\/ ... |] quasi quoter@@ -152,7 +181,7 @@ -- -- will replace a @foo@ suffix of the argument text, of any -- capitalisation, with a (lower case) @bar@. If you need to specify the--- options dynamically, use the @[re_| ... |]@ and @[red_| ... \/\/\/ ... |]@+-- options dynamically, use the @[re_| ... |]@ and @[ed_| ... \/\/\/ ... |]@ -- quasi quoters, which generate functions that take an 'IsOption' option -- (e.g., a 'SimpleReOptions' value) and yields a 'RE' or 'SearchReplace' -- as apropriate. For example if you have a 'SimpleReOptions' value in@@ -171,3 +200,18 @@ -- $ed -- The @[ed|.*\/\/\/foo|]@ quasi quoters, with variants for specifing different -- options to the RE compiler (see "Text.RE.REOptions").++-- $ed+-- The -- | the @[ed| ... \/\/\/ ... |]@ quasi quoters; for example,+--+-- @[ed|${y}([0-9]{4})-0*${m}([0-9]{2})-0*${d}([0-9]{2})\/\/\/${d}\/${m}\/${y}|])@+--+-- represents a @SearchReplace@ that will convert a YYYY-MM-DD format date+-- into a DD\/MM\/YYYY format date.+--+-- The only difference betweem these quasi quoters is the RE options that are set,+-- using the same conventions as the @[re| ... |]@ quasi quoters.++-- $isregex+-- The 'IsRegex' class is used to abstact over the different regex back ends and+-- the text types they work with -- see "Text.RE.Tools.IsRegex" for details.
Text/RE/TDFA/Text.hs view
@@ -20,18 +20,21 @@ -- * The 'SearchReplace' Operators , (*=~/) , (?=~/)- -- * Matches+ -- * The 'Matches' Type , Matches , matchesSource , allMatches , anyMatches , countMatches , matches- -- * Match+ -- * The 'Match' Type , Match , matchSource , matched , matchedText+ -- * The Macros and Parsers+ -- $macros+ , module Text.RE.TestBench.Parsers -- * The 'RE' Type , RE , reSource@@ -47,16 +50,38 @@ , escape , escapeWith , escapeREString- -- * The Classic rexex-base Match Operators+ -- * The Classic regex-base Match Operators , (=~) , (=~~)- -- * IsRegex- , IsRegex(..)- -- * The Quasi Quoters and Minor Functions+ -- * The re Quasi Quoters -- $re- , module Text.RE.ZeInternals.TDFA+ , re+ , reMultilineSensitive+ , reMultilineInsensitive+ , reBlockSensitive+ , reBlockInsensitive+ , reMS+ , reMI+ , reBS+ , reBI+ , re_+ -- * The Ed Quasi Quoters -- $ed- , module Text.RE.ZeInternals.SearchReplace.TDFA.Text+ , edMultilineSensitive+ , edMultilineInsensitive+ , edBlockSensitive+ , edBlockInsensitive+ , ed+ , edMS+ , edMI+ , edBS+ , edBI+ , ed_+ -- * The cp Quasi Quoters+ , cp+ -- * IsRegex+ -- $isregex+ , module Text.RE.Tools.IsRegex ) where import qualified Data.Text as T@@ -64,10 +89,11 @@ import Prelude.Compat import Text.RE.REOptions import Text.RE.Replace-import Text.RE.ZeInternals.AddCaptureNames+import Text.RE.TestBench.Parsers+import Text.RE.Tools.IsRegex+import Text.RE.ZeInternals import Text.RE.ZeInternals.SearchReplace.TDFA.Text import Text.RE.ZeInternals.TDFA-import Text.RE.ZeInternals.Types.IsRegex import Text.Regex.Base import qualified Text.Regex.TDFA as TDFA @@ -102,7 +128,7 @@ (*=~/) = flip searchReplaceAll -- | search and replace the first occurrence only (if any) in the input text--- e.g., to prefix the first string of four hex digits in the imput text,+-- e.g., to prefix the first string of four hex digits in the input text, -- if any, with @0x@: -- -- @(?=~\/ [ed|[0-9A-Fa-f]{4}\/\/\/0x$0|])@@@ -110,22 +136,20 @@ (?=~/) :: T.Text -> SearchReplace RE T.Text -> T.Text (?=~/) = flip searchReplaceFirst --- | the regex-base polymorphic match operator+-- | the `regex-base` polymorphic match operator (=~) :: ( Typeable a , RegexContext TDFA.Regex T.Text a- , RegexMaker TDFA.Regex TDFA.CompOption TDFA.ExecOption String ) => T.Text -> RE -> a (=~) bs rex = addCaptureNames (reCaptureNames rex) $ match (reRegex rex) bs --- | the regex-base monadic, polymorphic match operator+-- | the `regex-base` monadic, polymorphic match operator (=~~) :: ( Monad m , Functor m , Typeable a , RegexContext TDFA.Regex T.Text a- , RegexMaker TDFA.Regex TDFA.CompOption TDFA.ExecOption String ) => T.Text -> RE@@ -142,6 +166,11 @@ -- $tutorial -- We have a regex tutorial at <http://tutorial.regex.uk>. +-- $macros+-- There are a number of RE macros and corresponding Haskell parsers+-- for parsing the matched text into appropriate Haskell types. See+-- the [Macros Tables](http://regex.uk/macros) for details.+ -- $options -- You can specify different compilation options by appending a -- to the name of an [re| ... |] or [ed| ... \/\/\/ ... |] quasi quoter@@ -152,7 +181,7 @@ -- -- will replace a @foo@ suffix of the argument text, of any -- capitalisation, with a (lower case) @bar@. If you need to specify the--- options dynamically, use the @[re_| ... |]@ and @[red_| ... \/\/\/ ... |]@+-- options dynamically, use the @[re_| ... |]@ and @[ed_| ... \/\/\/ ... |]@ -- quasi quoters, which generate functions that take an 'IsOption' option -- (e.g., a 'SimpleReOptions' value) and yields a 'RE' or 'SearchReplace' -- as apropriate. For example if you have a 'SimpleReOptions' value in@@ -171,3 +200,18 @@ -- $ed -- The @[ed|.*\/\/\/foo|]@ quasi quoters, with variants for specifing different -- options to the RE compiler (see "Text.RE.REOptions").++-- $ed+-- The -- | the @[ed| ... \/\/\/ ... |]@ quasi quoters; for example,+--+-- @[ed|${y}([0-9]{4})-0*${m}([0-9]{2})-0*${d}([0-9]{2})\/\/\/${d}\/${m}\/${y}|])@+--+-- represents a @SearchReplace@ that will convert a YYYY-MM-DD format date+-- into a DD\/MM\/YYYY format date.+--+-- The only difference betweem these quasi quoters is the RE options that are set,+-- using the same conventions as the @[re| ... |]@ quasi quoters.++-- $isregex+-- The 'IsRegex' class is used to abstact over the different regex back ends and+-- the text types they work with -- see "Text.RE.Tools.IsRegex" for details.
Text/RE/TDFA/Text/Lazy.hs view
@@ -20,18 +20,21 @@ -- * The 'SearchReplace' Operators , (*=~/) , (?=~/)- -- * Matches+ -- * The 'Matches' Type , Matches , matchesSource , allMatches , anyMatches , countMatches , matches- -- * Match+ -- * The 'Match' Type , Match , matchSource , matched , matchedText+ -- * The Macros and Parsers+ -- $macros+ , module Text.RE.TestBench.Parsers -- * The 'RE' Type , RE , reSource@@ -47,16 +50,38 @@ , escape , escapeWith , escapeREString- -- * The Classic rexex-base Match Operators+ -- * The Classic regex-base Match Operators , (=~) , (=~~)- -- * IsRegex- , IsRegex(..)- -- * The Quasi Quoters and Minor Functions+ -- * The re Quasi Quoters -- $re- , module Text.RE.ZeInternals.TDFA+ , re+ , reMultilineSensitive+ , reMultilineInsensitive+ , reBlockSensitive+ , reBlockInsensitive+ , reMS+ , reMI+ , reBS+ , reBI+ , re_+ -- * The Ed Quasi Quoters -- $ed- , module Text.RE.ZeInternals.SearchReplace.TDFA.Text.Lazy+ , edMultilineSensitive+ , edMultilineInsensitive+ , edBlockSensitive+ , edBlockInsensitive+ , ed+ , edMS+ , edMI+ , edBS+ , edBI+ , ed_+ -- * The cp Quasi Quoters+ , cp+ -- * IsRegex+ -- $isregex+ , module Text.RE.Tools.IsRegex ) where import qualified Data.Text.Lazy as TL@@ -64,10 +89,11 @@ import Prelude.Compat import Text.RE.REOptions import Text.RE.Replace-import Text.RE.ZeInternals.AddCaptureNames+import Text.RE.TestBench.Parsers+import Text.RE.Tools.IsRegex+import Text.RE.ZeInternals import Text.RE.ZeInternals.SearchReplace.TDFA.Text.Lazy import Text.RE.ZeInternals.TDFA-import Text.RE.ZeInternals.Types.IsRegex import Text.Regex.Base import qualified Text.Regex.TDFA as TDFA @@ -102,7 +128,7 @@ (*=~/) = flip searchReplaceAll -- | search and replace the first occurrence only (if any) in the input text--- e.g., to prefix the first string of four hex digits in the imput text,+-- e.g., to prefix the first string of four hex digits in the input text, -- if any, with @0x@: -- -- @(?=~\/ [ed|[0-9A-Fa-f]{4}\/\/\/0x$0|])@@@ -110,22 +136,20 @@ (?=~/) :: TL.Text -> SearchReplace RE TL.Text -> TL.Text (?=~/) = flip searchReplaceFirst --- | the regex-base polymorphic match operator+-- | the `regex-base` polymorphic match operator (=~) :: ( Typeable a , RegexContext TDFA.Regex TL.Text a- , RegexMaker TDFA.Regex TDFA.CompOption TDFA.ExecOption String ) => TL.Text -> RE -> a (=~) bs rex = addCaptureNames (reCaptureNames rex) $ match (reRegex rex) bs --- | the regex-base monadic, polymorphic match operator+-- | the `regex-base` monadic, polymorphic match operator (=~~) :: ( Monad m , Functor m , Typeable a , RegexContext TDFA.Regex TL.Text a- , RegexMaker TDFA.Regex TDFA.CompOption TDFA.ExecOption String ) => TL.Text -> RE@@ -142,6 +166,11 @@ -- $tutorial -- We have a regex tutorial at <http://tutorial.regex.uk>. +-- $macros+-- There are a number of RE macros and corresponding Haskell parsers+-- for parsing the matched text into appropriate Haskell types. See+-- the [Macros Tables](http://regex.uk/macros) for details.+ -- $options -- You can specify different compilation options by appending a -- to the name of an [re| ... |] or [ed| ... \/\/\/ ... |] quasi quoter@@ -152,7 +181,7 @@ -- -- will replace a @foo@ suffix of the argument text, of any -- capitalisation, with a (lower case) @bar@. If you need to specify the--- options dynamically, use the @[re_| ... |]@ and @[red_| ... \/\/\/ ... |]@+-- options dynamically, use the @[re_| ... |]@ and @[ed_| ... \/\/\/ ... |]@ -- quasi quoters, which generate functions that take an 'IsOption' option -- (e.g., a 'SimpleReOptions' value) and yields a 'RE' or 'SearchReplace' -- as apropriate. For example if you have a 'SimpleReOptions' value in@@ -171,3 +200,18 @@ -- $ed -- The @[ed|.*\/\/\/foo|]@ quasi quoters, with variants for specifing different -- options to the RE compiler (see "Text.RE.REOptions").++-- $ed+-- The -- | the @[ed| ... \/\/\/ ... |]@ quasi quoters; for example,+--+-- @[ed|${y}([0-9]{4})-0*${m}([0-9]{2})-0*${d}([0-9]{2})\/\/\/${d}\/${m}\/${y}|])@+--+-- represents a @SearchReplace@ that will convert a YYYY-MM-DD format date+-- into a DD\/MM\/YYYY format date.+--+-- The only difference betweem these quasi quoters is the RE options that are set,+-- using the same conventions as the @[re| ... |]@ quasi quoters.++-- $isregex+-- The 'IsRegex' class is used to abstact over the different regex back ends and+-- the text types they work with -- see "Text.RE.Tools.IsRegex" for details.
Text/RE/TestBench.hs view
@@ -3,6 +3,9 @@ module Text.RE.TestBench (+ -- * The Test Bench Tutorial+ -- $tutorial+ -- * The Test Bench MacroEnv , MacroDescriptor(..)@@ -19,34 +22,23 @@ , formatMacroSummary , formatMacroSources , formatMacroSource+ , mdRegexSource -- ** Formatting Macros , testMacroEnv , runTests , runTests'- -- * Parsing- , parseInteger- , parseHex- , parseDouble- , parseString- , parseSimpleString- , parseDate- , parseSlashesDate- , parseTimeOfDay- , parseTimeZone- , parseDateTime- , parseDateTime8601- , parseDateTimeCLF- , parseShortMonth- , shortMonthArray- , IPV4Address- , parseIPv4Address- , Severity(..)- , parseSeverity- , severityKeywords- -- * Text.RE- , module Text.RE+ -- * The Parsers+ , module Text.RE.TestBench.Parsers+ -- * The Match Type+ , Match ) where -import Text.RE+import Text.RE.TestBench.Parsers import Text.RE.ZeInternals.TestBench-import Text.RE.ZeInternals.TestBench.Parsers+import Text.RE.ZeInternals.Types.Match++-- $tutorial+-- This API module provides a test bench for developing, documenting and+-- testing regex RE macros.+--+-- See the tutorials at http://re-tutorial-testbench.regex.uk
+ Text/RE/TestBench/Parsers.hs view
@@ -0,0 +1,23 @@+module Text.RE.TestBench.Parsers+ ( parseInteger+ , parseHex+ , parseDouble+ , parseString+ , parseSimpleString+ , parseDate+ , parseSlashesDate+ , parseTimeOfDay+ , parseTimeZone+ , parseDateTime+ , parseDateTime8601+ , parseDateTimeCLF+ , parseShortMonth+ , shortMonthArray+ , IPV4Address+ , parseIPv4Address+ , Severity(..)+ , parseSeverity+ , severityKeywords+ ) where++import Text.RE.ZeInternals.TestBench.Parsers
Text/RE/Tools.hs view
@@ -1,7 +1,9 @@+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+ module Text.RE.Tools (- -- * The Tools- -- $tools+ -- * The Tools Tutorial+ -- $tutorial -- * Sed sed@@ -25,6 +27,9 @@ , findMatches_' -- * IsRegex , IsRegex(..)+ , SearchReplace(..)+ , searchReplaceAll+ , searchReplaceFirst -- * Edit , Edits(..) , Edit(..)@@ -37,13 +42,19 @@ , firstLine , getLineNo , lineNo- -- * Text.RE- , module Text.RE+ -- * Replace+ , module Text.RE.Replace ) where -import Text.RE+import Text.RE.Replace import Text.RE.Tools.Edit import Text.RE.Tools.Find import Text.RE.Tools.Grep import Text.RE.Tools.Lex import Text.RE.Tools.Sed++-- $tutorial+-- This API module provides some familiar RE tools on top of the core+-- package functions and types.+--+-- See the Regex Tools tutorial at http://re-tutorial-tools.regex.uk
Text/RE/Tools/Edit.lhs view
@@ -10,52 +10,63 @@ module Text.RE.Tools.Edit ( -- * Editing+ -- $tutorial Edits(..) , Edit(..)- , SearchReplace(..) , LineEdit(..) , applyEdits , applyEdit , applyLineEdit+ -- * IsRegex+ , IsRegex(..)+ , SearchReplace(..)+ , searchReplaceAll+ , searchReplaceFirst -- * LineNo , LineNo(..) , firstLine , getLineNo , lineNo- -- * Text.RE- , module Text.RE+ -- * Replace+ , module Text.RE.Replace ) where import Data.Maybe import Prelude.Compat-import Text.RE import Text.RE.Replace-import Text.RE.ZeInternals.Types.IsRegex+import Text.RE.Tools.IsRegex import Text.RE.ZeInternals.Types.LineNo+\end{code} +\begin{code} -- | an 'Edits' script will, for each line in the file, either perform -- the action selected by the first RE in the list, or perform all of the -- actions on line, arranged as a pipeline data Edits m re s- = Select ![Edit m re s]- | Pipe ![Edit m re s]+ = Select ![Edit m re s] -- ^ for each line select the first @Edit@ to match each line and edit the line with it+ | Pipe ![Edit m re s] -- ^ for each line apply every edit that matches in turn to the line -- | each Edit action specifies how the match should be processed data Edit m re s = Template !(SearchReplace re s)+ -- ^ replace the match with this template text, substituting ${capture} as apropriate | Function !re REContext !(LineNo->Match s->RELocation->Capture s->m (Maybe s))+ -- ^ use this function to replace the 'REContext' specified captures in each line matched | LineEdit !re !(LineNo->Matches s->m (LineEdit s))+ -- ^ use this function to edit each line matched -- | a LineEdit is the most general action thar can be performed on a line -- and is the only means of deleting a line data LineEdit s- = NoEdit- | ReplaceWith !s- | Delete+ = NoEdit -- ^ do not edit this line but leave as is+ | ReplaceWith !s -- ^ replace the line with this text (terminating newline should not be included)+ | Delete -- ^ delete the this line altogether deriving (Functor,Show)+\end{code} +\begin{code} -- | apply an 'Edit' script to a single line applyEdits :: (IsRegex re s,Monad m,Functor m) => LineNo@@ -122,4 +133,12 @@ f edit act = do s <- act fromMaybe s <$> applyEdit id lno edit s+\end{code}++\begin{code}+-- $tutorial+-- The Edit toolkit looks for REs that match a text and runs the+-- associated actions.+--+-- See the Regex Tools tutorial at http://re-tutorial-tools.regex.uk \end{code}
Text/RE/Tools/Find.lhs view
@@ -7,19 +7,29 @@ #endif module Text.RE.Tools.Find- ( FindMethods(..)+ (+ -- * Find+ -- $tutorial+ FindMethods(..) , findMatches_ , findMatches_'- -- * Text.RE- , module Text.RE+ -- * IsRegex+ , IsRegex(..)+ , SearchReplace(..)+ , searchReplaceAll+ , searchReplaceFirst+ -- * Replace+ , module Text.RE.Replace ) where import qualified Data.List as L import Prelude.Compat-import Text.RE import Text.RE.Replace+import Text.RE.Tools.IsRegex+\end{code} +\begin{code} -- | as we don't want the @directory@ and FilePath dependencies -- we will abstract the three calls we need into this record type data FindMethods s =@@ -31,8 +41,10 @@ -- System.Directory , combineDM :: s -> s -> s -- ^ </> from System.FilePath }+\end{code} +\begin{code} -- | recursively list all files whose filename matches given RE, -- sorting the list into ascending order; if the argument path has a -- trailing '/' then it will be removed@@ -68,4 +80,12 @@ where abs_path fn_ = fp `combineDM` fn_ ordinary fn_ = not $ fn_ `elem` [packR ".",packR ".."]+\end{code}++\begin{code}+-- $tutorial+-- The Find toolkit traverses directory trees invoking actions for each+-- file that matches a RE.+--+-- See the Regex Tools tutorial at http://re-tutorial-tools.regex.uk \end{code}
Text/RE/Tools/Grep.lhs view
@@ -5,7 +5,10 @@ {-# LANGUAGE CPP #-} module Text.RE.Tools.Grep- ( grep+ (+ -- Grep+ -- $tutorial+ grep , Verbosity(..) , Line(..) , grepLines@@ -16,33 +19,42 @@ , linesMatched -- * IsRegex , IsRegex(..)+ , SearchReplace(..)+ , searchReplaceAll+ , searchReplaceFirst -- * LineNo , LineNo(..) , firstLine , getLineNo , lineNo- -- * Text.RE- , module Text.RE+ -- * Replace+ , module Text.RE.Replace ) where import qualified Data.ByteString.Lazy.Char8 as LBS import Prelude.Compat import Text.Printf-import Text.RE-import Text.RE.ZeInternals.Replace+import Text.RE.Replace+import Text.RE.Tools.IsRegex import Text.RE.ZeInternals.Types.LineNo+\end{code} +\begin{code} -- | operates a bit like classic @grep@ printing out the lines matched grep :: IsRegex re LBS.ByteString => Verbosity -> re -> FilePath -> IO () grep v rex fp = grepLines rex fp >>= putStr . report v+\end{code} +\begin{code} -- | specifies whether to return the linss matched or missed data Verbosity = LinesMatched | LinesNotMatched deriving (Show,Eq,Ord)+\end{code} +\begin{code} -- | 'grepLines' returns a 'Line' for each line in the file, listing all -- of the 'Matches' for that line data Line s =@@ -51,7 +63,9 @@ , getLineMatches :: Matches s -- ^ all the 'Matches' of the RE on this line } deriving (Show)+\end{code} +\begin{code} -- | returns a 'Line' for each line in the file, enumerating all of the -- matches for that line grepLines :: IsRegex re LBS.ByteString@@ -59,14 +73,18 @@ -> FilePath -> IO [Line LBS.ByteString] grepLines rex fp = grepFilter rex <$> LBS.readFile fp+\end{code} +\begin{code} -- | returns a 'Line' for each line in the argument text, enumerating -- all of the matches for that line grepFilter :: IsRegex re s => re -> s -> [Line s] grepFilter rex = grepWithScript [(rex,mk)] . linesR where mk i mtchs = Just $ Line i mtchs+\end{code} +\begin{code} -- | a GrepScript lists RE-action associations, with the first RE to match -- a line selecting the action to be executed on each line in the file type GrepScript re s t = [(re,LineNo -> Matches s -> Maybe t)]@@ -99,4 +117,11 @@ f = case v of LinesMatched -> id LinesNotMatched -> not+\end{code}++\begin{code}+-- $tutorial+-- The Grep toolkit matches REs againt each line of a text.+--+-- See the Regex Tools tutorial at http://re-tutorial-tools.regex.uk \end{code}
+ Text/RE/Tools/IsRegex.hs view
@@ -0,0 +1,17 @@+module Text.RE.Tools.IsRegex+ (+ -- * IsRegex+ -- $tutorial+ IsRegex(..)+ , SearchReplace(..)+ , searchReplaceAll+ , searchReplaceFirst+ ) where++import Text.RE.ZeInternals.Types.IsRegex++-- $tutorial+-- The @IsRegex@ class abstracts over each regex back end and the+-- text types they support allowing general regex tools to constructed.+--+-- See the Regex Tools tutorial at http://re-tutorial-tools.regex.uk
Text/RE/Tools/Lex.hs view
@@ -1,11 +1,24 @@ module Text.RE.Tools.Lex- ( alex+ (+ -- * Find+ -- $tutorial+ alex , alex' -- * IsRegex , IsRegex(..)- -- * Text.RE- , module Text.RE+ , SearchReplace(..)+ , searchReplaceAll+ , searchReplaceFirst+ -- * Replace+ , module Text.RE.Replace ) where -import Text.RE+import Text.RE.Replace+import Text.RE.Tools.IsRegex import Text.RE.ZeInternals.Tools.Lex++-- $tutorial+-- The Lex toolkit uses REs to identify tokens in a file, returning a+-- list of tokens.+--+-- See the Regex Tools tutorial at http://re-tutorial-tools.regex.uk
Text/RE/Tools/Sed.lhs view
@@ -8,10 +8,11 @@ #endif module Text.RE.Tools.Sed- ( sed+ (+ -- * Sed+ -- $tutorial+ sed , sed'- -- * IsRegex- , IsRegex(..) -- * Edit , Edits(..) , Edit(..)@@ -19,22 +20,28 @@ , applyEdits , applyEdit , applyLineEdit+ -- * IsRegex+ , IsRegex(..)+ , SearchReplace(..)+ , searchReplaceAll+ , searchReplaceFirst -- * LineNo , LineNo(..) , firstLine , getLineNo , lineNo- -- * Text.RE- , module Text.RE+ -- * Replace+ , module Text.RE.Replace ) where import qualified Data.ByteString.Lazy.Char8 as LBS import Prelude.Compat-import Text.RE import Text.RE.Replace import Text.RE.Tools.Edit+\end{code} +\begin{code} -- | read a file, apply an 'Edits' script to each line it and -- write the file out again; "-" is used to indicate standard input -- standard output as appropriate@@ -43,25 +50,31 @@ -> FilePath -> FilePath -> IO ()-sed as i_fp o_fp = do+sed escr i_fp o_fp = do lns <- LBS.lines <$> read_file i_fp lns' <- sequence- [ applyEdits lno as s+ [ applyEdits lno escr s | (lno,s)<-zip [firstLine..] lns ] write_file o_fp $ LBS.concat lns'+\end{code} ++\begin{code} -- | apply an 'Edits' script to each line of the argument text sed' :: (IsRegex re a,Monad m,Functor m) => Edits m re a -> a -> m a-sed' as t = do+sed' escr t = do mconcat <$> sequence- [ applyEdits lno as s+ [ applyEdits lno escr s | (lno,s)<-zip [firstLine..] $ linesR t ]+\end{code} ++\begin{code} read_file :: FilePath -> IO LBS.ByteString read_file "-" = LBS.getContents read_file fp = LBS.readFile fp@@ -69,4 +82,14 @@ write_file :: FilePath -> LBS.ByteString ->IO () write_file "-" = LBS.putStr write_file fp = LBS.writeFile fp+\end{code}+++\begin{code}+-- $tutorial+-- The Sed toolkit applyies @Edits@ scripts to each line+-- of a text, running the actions and adjusting each line+-- accordingly.+--+-- See the Regex Tools tutorial at http://re-tutorial-tools.regex.uk \end{code}
Text/RE/ZeInternals.hs view
@@ -2,14 +2,57 @@ ( -- * The regex Internal Modules -- $internals++ -- * Text.RE.ZeInternals.AddCaptureNames+ addCaptureNames+ , addCaptureNamesToMatches+ , addCaptureNamesToMatch+ -- * Text.RE.ZeInternals.EscapeREString+ , escapeREString+ -- * Text.RE.ZeInternals.NamedCaptures+ , cp+ , extractNamedCaptures+ , idFormatTokenREOptions+ , Token+ , validToken+ , formatTokens+ , formatTokens'+ , formatTokens0+ , scan+ -- * Text.RE.ZeInternals.Replace+ , expandMacros+ -- * Text.RE.ZeInternals.PreludeMacros+ , PreludeMacro(..)+ , presentPreludeMacro+ , preludeMacros+ , preludeMacroTable+ , preludeMacroSummary+ , preludeMacroSources+ , preludeMacroSource+ , preludeMacroEnv+ -- * Text.RE.ZeInternals.SearchReplace+ , unsafeCompileSearchReplace_+ , compileSearchReplace_+ , compileSearchAndReplace_+ -- * Text.RE.ZeInternals.QQ+ , QQFailure(..)+ , qq0+ -- * Text.RE.ZeInternals.TestBench+ , mkTDFA+ , mkPCRE+ , badMacros ) where +import Text.RE.ZeInternals.AddCaptureNames+import Text.RE.ZeInternals.EscapeREString+import Text.RE.ZeInternals.NamedCaptures+import Text.RE.ZeInternals.PreludeMacros+import Text.RE.ZeInternals.QQ+import Text.RE.ZeInternals.Replace+import Text.RE.ZeInternals.SearchReplace+import Text.RE.ZeInternals.TestBench+ -- $internals--- The modules under 'ZeInternals' do not belong to the /official/ regex--- API, though their contents will so belong if they are listed in the outside--- `Text.RE` modules. This doesn't mean that they cannot be used but be aware--- that they may not be as stable or as well documented as the official API--- modules.------ If you do notice anything in here that you think we have missed that--- should be listed in the official API then please drop us a line.+-- This module contains just what the test suite (re-tests) in regex-examples+-- needs from the package internals to do its job and the ZeInternals+-- types and functions needed by the regex-with-pcre package
Text/RE/ZeInternals/NamedCaptures.lhs view
@@ -36,7 +36,9 @@ import Text.Regex.TDFA --- | quasi quoter for CaptureID ([cp|0|],[cp|y|], etc.)+-- | quasi quoter for CaptureID: @[cp|0|]@, @[cp|0|]@, etc.,+-- indexing captures by classic positional numbers, and @[cp|foo|]@,+-- etc., referencing a named capture @[re| ... ${foo}( ... ) ... |]@. cp :: QuasiQuoter cp = (qq0 "cp")@@ -115,7 +117,7 @@ \begin{code} -- | scan a RE string into a list of RE Token scan :: String -> [Token]-scan = alex' match al oops+scan = alex' match al $ oops "top" where al :: [(Regex,Match String->Maybe Token)] al =@@ -131,11 +133,11 @@ x_1 = captureText $ IsCaptureOrdinal $ CaptureOrdinal 1 s2c [c] = c- s2c _ = error "scan:s2c:internal error"+ s2c _ = oops "s2c" mk s f = (either error id $ makeRegexM s,Just . f) - oops = error "reScanner"+ oops m = error $ "NamedCaptures.scan: " ++ m \end{code}
Text/RE/ZeInternals/PreludeMacros.hs view
@@ -242,7 +242,7 @@ , macroCounterSamples = counter_samples , macroTestResults = [] , macroParser = Just "parseInteger"- , macroDescription = "a decimal integer"+ , macroDescription = "a decimal natural number" } where samples :: [(String,Double)]@@ -315,7 +315,7 @@ , macroCounterSamples = counter_samples , macroTestResults = [] , macroParser = Just "parseSimpleString"- , macroDescription = "a decimal integer"+ , macroDescription = "a simple quoted string" } where samples :: [(String,String)]
Text/RE/ZeInternals/SearchReplace/TDFA/ByteString.hs view
@@ -7,17 +7,15 @@ #endif module Text.RE.ZeInternals.SearchReplace.TDFA.ByteString- ( -- * The ed Quasi Quoters- -- $qq- ed- , edMS- , edMI- , edBS- , edBI+ ( ed , edMultilineSensitive , edMultilineInsensitive , edBlockSensitive , edBlockInsensitive+ , edMS+ , edMI+ , edBS+ , edBI , ed_ ) where @@ -25,47 +23,61 @@ import Language.Haskell.TH import Language.Haskell.TH.Quote import Text.RE.REOptions+import Text.RE.Tools.IsRegex import Text.RE.ZeInternals.SearchReplace.TDFAEdPrime import Text.RE.ZeInternals.TDFA-import Text.RE.ZeInternals.Types.SearchReplace +-- | @[ed| ... \/\/\/ ... |]@, is equivalent to @[edMultilineSensitive| ... \/\/\/ ... |]@,+-- compiling a case-sensitive, multi-line 'SearchReplace'+ed :: QuasiQuoter+ed = ed' sr_cast $ Just minBound -ed- , edMS- , edMI- , edBS- , edBI- , edMultilineSensitive- , edMultilineInsensitive- , edBlockSensitive- , edBlockInsensitive- , ed_ :: QuasiQuoter+-- | @[edMultilineSensitive| ... \/\/\/ ... |]@ compiles a case-sensitive, multi-line 'SearchReplace' template+edMultilineSensitive :: QuasiQuoter+edMultilineSensitive = ed' sr_cast $ Just MultilineSensitive -ed = ed' sr_cast $ Just minBound+-- | @[edMultilineInsensitive| ... \/\/\/ ... |]@ compiles a case-insensitive, multi-line 'SearchReplace' template+edMultilineInsensitive :: QuasiQuoter+edMultilineInsensitive = ed' sr_cast $ Just MultilineInsensitive++-- | @[edBlockSensitive| ... \/\/\/ ... |]@ compiles a case-sensitive, non-multi-line 'SearchReplace' template+edBlockSensitive :: QuasiQuoter+edBlockSensitive = ed' sr_cast $ Just BlockSensitive++-- | @[edBlockInsensitive| ... \/\/\/ ... |]@ compiles a case-insensitive, non-multi-line 'SearchReplace' template+edBlockInsensitive :: QuasiQuoter+edBlockInsensitive = ed' sr_cast $ Just BlockInsensitive++-- | @[edMS| ... \/\/\/ ... |]@ is a shorthand for @[edMultilineSensitive| ... \/\/\/ ... |]@+edMS :: QuasiQuoter edMS = edMultilineSensitive++-- | @[edMI| ... \/\/\/ ... |]@ is a shorthand for @[edMultilineInsensitive| ... \/\/\/ ... |]@+edMI :: QuasiQuoter edMI = edMultilineInsensitive++-- | @[edBS| ... \/\/\/ ... |]@ is a shorthand for @[edBlockSensitive| ... \/\/\/ ... |]@+edBS :: QuasiQuoter edBS = edBlockSensitive++-- | @[edBI| ... \/\/\/ ... |]@ is a shorthand for @[edBlockInsensitive| ... \/\/\/ ... |]@+edBI :: QuasiQuoter edBI = edBlockInsensitive-edMultilineSensitive = ed' sr_cast $ Just MultilineSensitive-edMultilineInsensitive = ed' sr_cast $ Just MultilineInsensitive-edBlockSensitive = ed' sr_cast $ Just BlockSensitive-edBlockInsensitive = ed' sr_cast $ Just BlockInsensitive++-- | @[ed_| ... \/\/\/ ... |]@ compiles a 'SearchReplace' template to produce a function that+-- takes the RE options (e.g., a 'SimpleREOptions' value) and yields the+-- 'SearchReplace' template compiled with those options. For example,+--+-- @s *=~/ [ed_|${hex}([0-9a-f]+)\/\/\/0x${hex}|] MultilineInsensitive@+--+-- prefixes the hexadecimal digit strings in s with @0x@, allowing for+-- upper- or lower-case hex didgits (which is entirely equivalent+-- in this example to just using @[edMultilineInsensitive|[0-9a-f]+|]@).+ed_ :: QuasiQuoter ed_ = ed' fn_cast Nothing sr_cast :: Q Exp sr_cast = [|\x -> x :: SearchReplace RE B.ByteString|] fn_cast :: Q Exp-fn_cast = [|\x -> x :: SimpleREOptions -> SearchReplace RE B.ByteString|]---- $qq--- The -- | the @[ed| ... \/\/\/ ... |]@ quasi quoters; for exaple,------ @[ed|${y}([0-9]{4})-0*${m}([0-9]{2})-0*${d}([0-9]{2})\/\/\/${d}\/${m}\/${y}|])@------ represents a @SearchReplace@ that will convert a YYYY-MM-DD format date--- into a DD\/MM\/YYYY format date.------ The only difference betweem these quasi quoters is the RE options that are set:--- see the "Text.RE.REOptions" documentation for details.---+fn_cast = [|\f x -> f x :: SearchReplace RE B.ByteString|]
Text/RE/ZeInternals/SearchReplace/TDFA/ByteString/Lazy.hs view
@@ -7,17 +7,15 @@ #endif module Text.RE.ZeInternals.SearchReplace.TDFA.ByteString.Lazy- ( -- * The ed Quasi Quoters- -- $qq- ed- , edMS- , edMI- , edBS- , edBI+ ( ed , edMultilineSensitive , edMultilineInsensitive , edBlockSensitive , edBlockInsensitive+ , edMS+ , edMI+ , edBS+ , edBI , ed_ ) where @@ -25,47 +23,61 @@ import Language.Haskell.TH import Language.Haskell.TH.Quote import Text.RE.REOptions+import Text.RE.Tools.IsRegex import Text.RE.ZeInternals.SearchReplace.TDFAEdPrime import Text.RE.ZeInternals.TDFA-import Text.RE.ZeInternals.Types.SearchReplace +-- | @[ed| ... \/\/\/ ... |]@, is equivalent to @[edMultilineSensitive| ... \/\/\/ ... |]@,+-- compiling a case-sensitive, multi-line 'SearchReplace'+ed :: QuasiQuoter+ed = ed' sr_cast $ Just minBound -ed- , edMS- , edMI- , edBS- , edBI- , edMultilineSensitive- , edMultilineInsensitive- , edBlockSensitive- , edBlockInsensitive- , ed_ :: QuasiQuoter+-- | @[edMultilineSensitive| ... \/\/\/ ... |]@ compiles a case-sensitive, multi-line 'SearchReplace' template+edMultilineSensitive :: QuasiQuoter+edMultilineSensitive = ed' sr_cast $ Just MultilineSensitive -ed = ed' sr_cast $ Just minBound+-- | @[edMultilineInsensitive| ... \/\/\/ ... |]@ compiles a case-insensitive, multi-line 'SearchReplace' template+edMultilineInsensitive :: QuasiQuoter+edMultilineInsensitive = ed' sr_cast $ Just MultilineInsensitive++-- | @[edBlockSensitive| ... \/\/\/ ... |]@ compiles a case-sensitive, non-multi-line 'SearchReplace' template+edBlockSensitive :: QuasiQuoter+edBlockSensitive = ed' sr_cast $ Just BlockSensitive++-- | @[edBlockInsensitive| ... \/\/\/ ... |]@ compiles a case-insensitive, non-multi-line 'SearchReplace' template+edBlockInsensitive :: QuasiQuoter+edBlockInsensitive = ed' sr_cast $ Just BlockInsensitive++-- | @[edMS| ... \/\/\/ ... |]@ is a shorthand for @[edMultilineSensitive| ... \/\/\/ ... |]@+edMS :: QuasiQuoter edMS = edMultilineSensitive++-- | @[edMI| ... \/\/\/ ... |]@ is a shorthand for @[edMultilineInsensitive| ... \/\/\/ ... |]@+edMI :: QuasiQuoter edMI = edMultilineInsensitive++-- | @[edBS| ... \/\/\/ ... |]@ is a shorthand for @[edBlockSensitive| ... \/\/\/ ... |]@+edBS :: QuasiQuoter edBS = edBlockSensitive++-- | @[edBI| ... \/\/\/ ... |]@ is a shorthand for @[edBlockInsensitive| ... \/\/\/ ... |]@+edBI :: QuasiQuoter edBI = edBlockInsensitive-edMultilineSensitive = ed' sr_cast $ Just MultilineSensitive-edMultilineInsensitive = ed' sr_cast $ Just MultilineInsensitive-edBlockSensitive = ed' sr_cast $ Just BlockSensitive-edBlockInsensitive = ed' sr_cast $ Just BlockInsensitive++-- | @[ed_| ... \/\/\/ ... |]@ compiles a 'SearchReplace' template to produce a function that+-- takes the RE options (e.g., a 'SimpleREOptions' value) and yields the+-- 'SearchReplace' template compiled with those options. For example,+--+-- @s *=~/ [ed_|${hex}([0-9a-f]+)\/\/\/0x${hex}|] MultilineInsensitive@+--+-- prefixes the hexadecimal digit strings in s with @0x@, allowing for+-- upper- or lower-case hex didgits (which is entirely equivalent+-- in this example to just using @[edMultilineInsensitive|[0-9a-f]+|]@).+ed_ :: QuasiQuoter ed_ = ed' fn_cast Nothing sr_cast :: Q Exp sr_cast = [|\x -> x :: SearchReplace RE LBS.ByteString|] fn_cast :: Q Exp-fn_cast = [|\x -> x :: SimpleREOptions -> SearchReplace RE LBS.ByteString|]---- $qq--- The -- | the @[ed| ... \/\/\/ ... |]@ quasi quoters; for exaple,------ @[ed|${y}([0-9]{4})-0*${m}([0-9]{2})-0*${d}([0-9]{2})\/\/\/${d}\/${m}\/${y}|])@------ represents a @SearchReplace@ that will convert a YYYY-MM-DD format date--- into a DD\/MM\/YYYY format date.------ The only difference betweem these quasi quoters is the RE options that are set:--- see the "Text.RE.REOptions" documentation for details.---+fn_cast = [|\f x -> f x :: SearchReplace RE LBS.ByteString|]
Text/RE/ZeInternals/SearchReplace/TDFA/Sequence.hs view
@@ -7,17 +7,15 @@ #endif module Text.RE.ZeInternals.SearchReplace.TDFA.Sequence- ( -- * The ed Quasi Quoters- -- $qq- ed- , edMS- , edMI- , edBS- , edBI+ ( ed , edMultilineSensitive , edMultilineInsensitive , edBlockSensitive , edBlockInsensitive+ , edMS+ , edMI+ , edBS+ , edBI , ed_ ) where @@ -25,47 +23,61 @@ import Language.Haskell.TH import Language.Haskell.TH.Quote import Text.RE.REOptions+import Text.RE.Tools.IsRegex import Text.RE.ZeInternals.SearchReplace.TDFAEdPrime import Text.RE.ZeInternals.TDFA-import Text.RE.ZeInternals.Types.SearchReplace +-- | @[ed| ... \/\/\/ ... |]@, is equivalent to @[edMultilineSensitive| ... \/\/\/ ... |]@,+-- compiling a case-sensitive, multi-line 'SearchReplace'+ed :: QuasiQuoter+ed = ed' sr_cast $ Just minBound -ed- , edMS- , edMI- , edBS- , edBI- , edMultilineSensitive- , edMultilineInsensitive- , edBlockSensitive- , edBlockInsensitive- , ed_ :: QuasiQuoter+-- | @[edMultilineSensitive| ... \/\/\/ ... |]@ compiles a case-sensitive, multi-line 'SearchReplace' template+edMultilineSensitive :: QuasiQuoter+edMultilineSensitive = ed' sr_cast $ Just MultilineSensitive -ed = ed' sr_cast $ Just minBound+-- | @[edMultilineInsensitive| ... \/\/\/ ... |]@ compiles a case-insensitive, multi-line 'SearchReplace' template+edMultilineInsensitive :: QuasiQuoter+edMultilineInsensitive = ed' sr_cast $ Just MultilineInsensitive++-- | @[edBlockSensitive| ... \/\/\/ ... |]@ compiles a case-sensitive, non-multi-line 'SearchReplace' template+edBlockSensitive :: QuasiQuoter+edBlockSensitive = ed' sr_cast $ Just BlockSensitive++-- | @[edBlockInsensitive| ... \/\/\/ ... |]@ compiles a case-insensitive, non-multi-line 'SearchReplace' template+edBlockInsensitive :: QuasiQuoter+edBlockInsensitive = ed' sr_cast $ Just BlockInsensitive++-- | @[edMS| ... \/\/\/ ... |]@ is a shorthand for @[edMultilineSensitive| ... \/\/\/ ... |]@+edMS :: QuasiQuoter edMS = edMultilineSensitive++-- | @[edMI| ... \/\/\/ ... |]@ is a shorthand for @[edMultilineInsensitive| ... \/\/\/ ... |]@+edMI :: QuasiQuoter edMI = edMultilineInsensitive++-- | @[edBS| ... \/\/\/ ... |]@ is a shorthand for @[edBlockSensitive| ... \/\/\/ ... |]@+edBS :: QuasiQuoter edBS = edBlockSensitive++-- | @[edBI| ... \/\/\/ ... |]@ is a shorthand for @[edBlockInsensitive| ... \/\/\/ ... |]@+edBI :: QuasiQuoter edBI = edBlockInsensitive-edMultilineSensitive = ed' sr_cast $ Just MultilineSensitive-edMultilineInsensitive = ed' sr_cast $ Just MultilineInsensitive-edBlockSensitive = ed' sr_cast $ Just BlockSensitive-edBlockInsensitive = ed' sr_cast $ Just BlockInsensitive++-- | @[ed_| ... \/\/\/ ... |]@ compiles a 'SearchReplace' template to produce a function that+-- takes the RE options (e.g., a 'SimpleREOptions' value) and yields the+-- 'SearchReplace' template compiled with those options. For example,+--+-- @s *=~/ [ed_|${hex}([0-9a-f]+)\/\/\/0x${hex}|] MultilineInsensitive@+--+-- prefixes the hexadecimal digit strings in s with @0x@, allowing for+-- upper- or lower-case hex didgits (which is entirely equivalent+-- in this example to just using @[edMultilineInsensitive|[0-9a-f]+|]@).+ed_ :: QuasiQuoter ed_ = ed' fn_cast Nothing sr_cast :: Q Exp sr_cast = [|\x -> x :: SearchReplace RE (S.Seq Char)|] fn_cast :: Q Exp-fn_cast = [|\x -> x :: SimpleREOptions -> SearchReplace RE (S.Seq Char)|]---- $qq--- The -- | the @[ed| ... \/\/\/ ... |]@ quasi quoters; for exaple,------ @[ed|${y}([0-9]{4})-0*${m}([0-9]{2})-0*${d}([0-9]{2})\/\/\/${d}\/${m}\/${y}|])@------ represents a @SearchReplace@ that will convert a YYYY-MM-DD format date--- into a DD\/MM\/YYYY format date.------ The only difference betweem these quasi quoters is the RE options that are set:--- see the "Text.RE.REOptions" documentation for details.---+fn_cast = [|\f x -> f x :: SearchReplace RE (S.Seq Char)|]
Text/RE/ZeInternals/SearchReplace/TDFA/String.hs view
@@ -7,17 +7,15 @@ #endif module Text.RE.ZeInternals.SearchReplace.TDFA.String- ( -- * The ed Quasi Quoters- -- $qq- ed- , edMS- , edMI- , edBS- , edBI+ ( ed , edMultilineSensitive , edMultilineInsensitive , edBlockSensitive , edBlockInsensitive+ , edMS+ , edMI+ , edBS+ , edBI , ed_ ) where @@ -25,47 +23,61 @@ import Language.Haskell.TH import Language.Haskell.TH.Quote import Text.RE.REOptions+import Text.RE.Tools.IsRegex import Text.RE.ZeInternals.SearchReplace.TDFAEdPrime import Text.RE.ZeInternals.TDFA-import Text.RE.ZeInternals.Types.SearchReplace +-- | @[ed| ... \/\/\/ ... |]@, is equivalent to @[edMultilineSensitive| ... \/\/\/ ... |]@,+-- compiling a case-sensitive, multi-line 'SearchReplace'+ed :: QuasiQuoter+ed = ed' sr_cast $ Just minBound -ed- , edMS- , edMI- , edBS- , edBI- , edMultilineSensitive- , edMultilineInsensitive- , edBlockSensitive- , edBlockInsensitive- , ed_ :: QuasiQuoter+-- | @[edMultilineSensitive| ... \/\/\/ ... |]@ compiles a case-sensitive, multi-line 'SearchReplace' template+edMultilineSensitive :: QuasiQuoter+edMultilineSensitive = ed' sr_cast $ Just MultilineSensitive -ed = ed' sr_cast $ Just minBound+-- | @[edMultilineInsensitive| ... \/\/\/ ... |]@ compiles a case-insensitive, multi-line 'SearchReplace' template+edMultilineInsensitive :: QuasiQuoter+edMultilineInsensitive = ed' sr_cast $ Just MultilineInsensitive++-- | @[edBlockSensitive| ... \/\/\/ ... |]@ compiles a case-sensitive, non-multi-line 'SearchReplace' template+edBlockSensitive :: QuasiQuoter+edBlockSensitive = ed' sr_cast $ Just BlockSensitive++-- | @[edBlockInsensitive| ... \/\/\/ ... |]@ compiles a case-insensitive, non-multi-line 'SearchReplace' template+edBlockInsensitive :: QuasiQuoter+edBlockInsensitive = ed' sr_cast $ Just BlockInsensitive++-- | @[edMS| ... \/\/\/ ... |]@ is a shorthand for @[edMultilineSensitive| ... \/\/\/ ... |]@+edMS :: QuasiQuoter edMS = edMultilineSensitive++-- | @[edMI| ... \/\/\/ ... |]@ is a shorthand for @[edMultilineInsensitive| ... \/\/\/ ... |]@+edMI :: QuasiQuoter edMI = edMultilineInsensitive++-- | @[edBS| ... \/\/\/ ... |]@ is a shorthand for @[edBlockSensitive| ... \/\/\/ ... |]@+edBS :: QuasiQuoter edBS = edBlockSensitive++-- | @[edBI| ... \/\/\/ ... |]@ is a shorthand for @[edBlockInsensitive| ... \/\/\/ ... |]@+edBI :: QuasiQuoter edBI = edBlockInsensitive-edMultilineSensitive = ed' sr_cast $ Just MultilineSensitive-edMultilineInsensitive = ed' sr_cast $ Just MultilineInsensitive-edBlockSensitive = ed' sr_cast $ Just BlockSensitive-edBlockInsensitive = ed' sr_cast $ Just BlockInsensitive++-- | @[ed_| ... \/\/\/ ... |]@ compiles a 'SearchReplace' template to produce a function that+-- takes the RE options (e.g., a 'SimpleREOptions' value) and yields the+-- 'SearchReplace' template compiled with those options. For example,+--+-- @s *=~/ [ed_|${hex}([0-9a-f]+)\/\/\/0x${hex}|] MultilineInsensitive@+--+-- prefixes the hexadecimal digit strings in s with @0x@, allowing for+-- upper- or lower-case hex didgits (which is entirely equivalent+-- in this example to just using @[edMultilineInsensitive|[0-9a-f]+|]@).+ed_ :: QuasiQuoter ed_ = ed' fn_cast Nothing sr_cast :: Q Exp sr_cast = [|\x -> x :: SearchReplace RE String|] fn_cast :: Q Exp-fn_cast = [|\x -> x :: SimpleREOptions -> SearchReplace RE String|]---- $qq--- The -- | the @[ed| ... \/\/\/ ... |]@ quasi quoters; for exaple,------ @[ed|${y}([0-9]{4})-0*${m}([0-9]{2})-0*${d}([0-9]{2})\/\/\/${d}\/${m}\/${y}|])@------ represents a @SearchReplace@ that will convert a YYYY-MM-DD format date--- into a DD\/MM\/YYYY format date.------ The only difference betweem these quasi quoters is the RE options that are set:--- see the "Text.RE.REOptions" documentation for details.---+fn_cast = [|\f x -> f x :: SearchReplace RE String|]
Text/RE/ZeInternals/SearchReplace/TDFA/Text.hs view
@@ -7,17 +7,15 @@ #endif module Text.RE.ZeInternals.SearchReplace.TDFA.Text- ( -- * The ed Quasi Quoters- -- $qq- ed- , edMS- , edMI- , edBS- , edBI+ ( ed , edMultilineSensitive , edMultilineInsensitive , edBlockSensitive , edBlockInsensitive+ , edMS+ , edMI+ , edBS+ , edBI , ed_ ) where @@ -25,47 +23,61 @@ import Language.Haskell.TH import Language.Haskell.TH.Quote import Text.RE.REOptions+import Text.RE.Tools.IsRegex import Text.RE.ZeInternals.SearchReplace.TDFAEdPrime import Text.RE.ZeInternals.TDFA-import Text.RE.ZeInternals.Types.SearchReplace +-- | @[ed| ... \/\/\/ ... |]@, is equivalent to @[edMultilineSensitive| ... \/\/\/ ... |]@,+-- compiling a case-sensitive, multi-line 'SearchReplace'+ed :: QuasiQuoter+ed = ed' sr_cast $ Just minBound -ed- , edMS- , edMI- , edBS- , edBI- , edMultilineSensitive- , edMultilineInsensitive- , edBlockSensitive- , edBlockInsensitive- , ed_ :: QuasiQuoter+-- | @[edMultilineSensitive| ... \/\/\/ ... |]@ compiles a case-sensitive, multi-line 'SearchReplace' template+edMultilineSensitive :: QuasiQuoter+edMultilineSensitive = ed' sr_cast $ Just MultilineSensitive -ed = ed' sr_cast $ Just minBound+-- | @[edMultilineInsensitive| ... \/\/\/ ... |]@ compiles a case-insensitive, multi-line 'SearchReplace' template+edMultilineInsensitive :: QuasiQuoter+edMultilineInsensitive = ed' sr_cast $ Just MultilineInsensitive++-- | @[edBlockSensitive| ... \/\/\/ ... |]@ compiles a case-sensitive, non-multi-line 'SearchReplace' template+edBlockSensitive :: QuasiQuoter+edBlockSensitive = ed' sr_cast $ Just BlockSensitive++-- | @[edBlockInsensitive| ... \/\/\/ ... |]@ compiles a case-insensitive, non-multi-line 'SearchReplace' template+edBlockInsensitive :: QuasiQuoter+edBlockInsensitive = ed' sr_cast $ Just BlockInsensitive++-- | @[edMS| ... \/\/\/ ... |]@ is a shorthand for @[edMultilineSensitive| ... \/\/\/ ... |]@+edMS :: QuasiQuoter edMS = edMultilineSensitive++-- | @[edMI| ... \/\/\/ ... |]@ is a shorthand for @[edMultilineInsensitive| ... \/\/\/ ... |]@+edMI :: QuasiQuoter edMI = edMultilineInsensitive++-- | @[edBS| ... \/\/\/ ... |]@ is a shorthand for @[edBlockSensitive| ... \/\/\/ ... |]@+edBS :: QuasiQuoter edBS = edBlockSensitive++-- | @[edBI| ... \/\/\/ ... |]@ is a shorthand for @[edBlockInsensitive| ... \/\/\/ ... |]@+edBI :: QuasiQuoter edBI = edBlockInsensitive-edMultilineSensitive = ed' sr_cast $ Just MultilineSensitive-edMultilineInsensitive = ed' sr_cast $ Just MultilineInsensitive-edBlockSensitive = ed' sr_cast $ Just BlockSensitive-edBlockInsensitive = ed' sr_cast $ Just BlockInsensitive++-- | @[ed_| ... \/\/\/ ... |]@ compiles a 'SearchReplace' template to produce a function that+-- takes the RE options (e.g., a 'SimpleREOptions' value) and yields the+-- 'SearchReplace' template compiled with those options. For example,+--+-- @s *=~/ [ed_|${hex}([0-9a-f]+)\/\/\/0x${hex}|] MultilineInsensitive@+--+-- prefixes the hexadecimal digit strings in s with @0x@, allowing for+-- upper- or lower-case hex didgits (which is entirely equivalent+-- in this example to just using @[edMultilineInsensitive|[0-9a-f]+|]@).+ed_ :: QuasiQuoter ed_ = ed' fn_cast Nothing sr_cast :: Q Exp sr_cast = [|\x -> x :: SearchReplace RE T.Text|] fn_cast :: Q Exp-fn_cast = [|\x -> x :: SimpleREOptions -> SearchReplace RE T.Text|]---- $qq--- The -- | the @[ed| ... \/\/\/ ... |]@ quasi quoters; for exaple,------ @[ed|${y}([0-9]{4})-0*${m}([0-9]{2})-0*${d}([0-9]{2})\/\/\/${d}\/${m}\/${y}|])@------ represents a @SearchReplace@ that will convert a YYYY-MM-DD format date--- into a DD\/MM\/YYYY format date.------ The only difference betweem these quasi quoters is the RE options that are set:--- see the "Text.RE.REOptions" documentation for details.---+fn_cast = [|\f x -> f x :: SearchReplace RE T.Text|]
Text/RE/ZeInternals/SearchReplace/TDFA/Text/Lazy.hs view
@@ -7,17 +7,15 @@ #endif module Text.RE.ZeInternals.SearchReplace.TDFA.Text.Lazy- ( -- * The ed Quasi Quoters- -- $qq- ed- , edMS- , edMI- , edBS- , edBI+ ( ed , edMultilineSensitive , edMultilineInsensitive , edBlockSensitive , edBlockInsensitive+ , edMS+ , edMI+ , edBS+ , edBI , ed_ ) where @@ -25,47 +23,61 @@ import Language.Haskell.TH import Language.Haskell.TH.Quote import Text.RE.REOptions+import Text.RE.Tools.IsRegex import Text.RE.ZeInternals.SearchReplace.TDFAEdPrime import Text.RE.ZeInternals.TDFA-import Text.RE.ZeInternals.Types.SearchReplace +-- | @[ed| ... \/\/\/ ... |]@, is equivalent to @[edMultilineSensitive| ... \/\/\/ ... |]@,+-- compiling a case-sensitive, multi-line 'SearchReplace'+ed :: QuasiQuoter+ed = ed' sr_cast $ Just minBound -ed- , edMS- , edMI- , edBS- , edBI- , edMultilineSensitive- , edMultilineInsensitive- , edBlockSensitive- , edBlockInsensitive- , ed_ :: QuasiQuoter+-- | @[edMultilineSensitive| ... \/\/\/ ... |]@ compiles a case-sensitive, multi-line 'SearchReplace' template+edMultilineSensitive :: QuasiQuoter+edMultilineSensitive = ed' sr_cast $ Just MultilineSensitive -ed = ed' sr_cast $ Just minBound+-- | @[edMultilineInsensitive| ... \/\/\/ ... |]@ compiles a case-insensitive, multi-line 'SearchReplace' template+edMultilineInsensitive :: QuasiQuoter+edMultilineInsensitive = ed' sr_cast $ Just MultilineInsensitive++-- | @[edBlockSensitive| ... \/\/\/ ... |]@ compiles a case-sensitive, non-multi-line 'SearchReplace' template+edBlockSensitive :: QuasiQuoter+edBlockSensitive = ed' sr_cast $ Just BlockSensitive++-- | @[edBlockInsensitive| ... \/\/\/ ... |]@ compiles a case-insensitive, non-multi-line 'SearchReplace' template+edBlockInsensitive :: QuasiQuoter+edBlockInsensitive = ed' sr_cast $ Just BlockInsensitive++-- | @[edMS| ... \/\/\/ ... |]@ is a shorthand for @[edMultilineSensitive| ... \/\/\/ ... |]@+edMS :: QuasiQuoter edMS = edMultilineSensitive++-- | @[edMI| ... \/\/\/ ... |]@ is a shorthand for @[edMultilineInsensitive| ... \/\/\/ ... |]@+edMI :: QuasiQuoter edMI = edMultilineInsensitive++-- | @[edBS| ... \/\/\/ ... |]@ is a shorthand for @[edBlockSensitive| ... \/\/\/ ... |]@+edBS :: QuasiQuoter edBS = edBlockSensitive++-- | @[edBI| ... \/\/\/ ... |]@ is a shorthand for @[edBlockInsensitive| ... \/\/\/ ... |]@+edBI :: QuasiQuoter edBI = edBlockInsensitive-edMultilineSensitive = ed' sr_cast $ Just MultilineSensitive-edMultilineInsensitive = ed' sr_cast $ Just MultilineInsensitive-edBlockSensitive = ed' sr_cast $ Just BlockSensitive-edBlockInsensitive = ed' sr_cast $ Just BlockInsensitive++-- | @[ed_| ... \/\/\/ ... |]@ compiles a 'SearchReplace' template to produce a function that+-- takes the RE options (e.g., a 'SimpleREOptions' value) and yields the+-- 'SearchReplace' template compiled with those options. For example,+--+-- @s *=~/ [ed_|${hex}([0-9a-f]+)\/\/\/0x${hex}|] MultilineInsensitive@+--+-- prefixes the hexadecimal digit strings in s with @0x@, allowing for+-- upper- or lower-case hex didgits (which is entirely equivalent+-- in this example to just using @[edMultilineInsensitive|[0-9a-f]+|]@).+ed_ :: QuasiQuoter ed_ = ed' fn_cast Nothing sr_cast :: Q Exp sr_cast = [|\x -> x :: SearchReplace RE TL.Text|] fn_cast :: Q Exp-fn_cast = [|\x -> x :: SimpleREOptions -> SearchReplace RE TL.Text|]---- $qq--- The -- | the @[ed| ... \/\/\/ ... |]@ quasi quoters; for exaple,------ @[ed|${y}([0-9]{4})-0*${m}([0-9]{2})-0*${d}([0-9]{2})\/\/\/${d}\/${m}\/${y}|])@------ represents a @SearchReplace@ that will convert a YYYY-MM-DD format date--- into a DD\/MM\/YYYY format date.------ The only difference betweem these quasi quoters is the RE options that are set:--- see the "Text.RE.REOptions" documentation for details.---+fn_cast = [|\f x -> f x :: SearchReplace RE TL.Text|]
Text/RE/ZeInternals/SearchReplace/TDFAEdPrime.hs view
@@ -18,10 +18,9 @@ import Prelude.Compat import Text.RE.REOptions import Text.RE.Replace-import Text.RE.ZeInternals.QQ-import Text.RE.ZeInternals.SearchReplace+import Text.RE.Tools.IsRegex+import Text.RE.ZeInternals import Text.RE.ZeInternals.TDFA-import Text.RE.ZeInternals.Types.IsRegex -- | construct a quasi quoter from a casting function and @Just sro@
Text/RE/ZeInternals/TDFA.hs view
@@ -30,6 +30,7 @@ , REOptions , defaultREOptions , noPreludeREOptions+ , unpackSimpleREOptions -- * Compiling Regular Expressions , compileRegex , compileRegexWith@@ -37,7 +38,7 @@ -- * Compiling Search-Replace Templates , compileSearchReplace , compileSearchReplaceWith- , compileSearchReplaceWithREOptions+ , compileSearchReplaceWithOptions -- * Escaping String , escape , escapeWith@@ -51,7 +52,6 @@ , preludeSummary , preludeSources , preludeSource- , unpackSimpleREOptions -- * The Quasi Quoters , re , reMS@@ -71,15 +71,10 @@ import Language.Haskell.TH.Quote import Prelude.Compat import Text.RE.REOptions-import Text.RE.ZeInternals.EscapeREString-import Text.RE.ZeInternals.NamedCaptures-import Text.RE.ZeInternals.PreludeMacros-import Text.RE.ZeInternals.QQ-import Text.RE.ZeInternals.Replace-import Text.RE.ZeInternals.SearchReplace-import Text.RE.ZeInternals.TestBench-import Text.RE.ZeInternals.Types.CaptureID-import Text.RE.ZeInternals.Types.IsRegex+import Text.RE.Replace+import Text.RE.TestBench+import Text.RE.Tools+import Text.RE.ZeInternals import Text.Regex.TDFA @@ -95,7 +90,7 @@ -- | some functions in the "Text.RE.TestBench" need the back end to -- be passed dynamically as a 'RegexType' parameters: use 'regexType'--- fpr this backend+-- for this regexType :: RegexType regexType = mkTDFA $ \txt env md -> txt =~ mdRegexSource regexType ExclCaptures env md@@ -227,12 +222,12 @@ -- | compile a SearchReplace template, with general options, generating -- errors if the RE or the template are not well formed, all capture -- references being checked-compileSearchReplaceWithREOptions :: (Monad m,Functor m,IsRegex RE s)- => REOptions- -> String- -> String- -> m (SearchReplace RE s)-compileSearchReplaceWithREOptions os = compileSearchAndReplace_ packR $ compileRegexWithOptions os+compileSearchReplaceWithOptions :: (Monad m,Functor m,IsRegex RE s)+ => REOptions+ -> String+ -> String+ -> m (SearchReplace RE s)+compileSearchReplaceWithOptions os = compileSearchAndReplace_ packR $ compileRegexWithOptions os ------------------------------------------------------------------------@@ -312,37 +307,53 @@ -- Quasi Quoters ------------------------------------------------------------------------ --- | the @[re| ... |]@ and @[ed| ... /// ... |]@ quasi quoters-re- , reMS- , reMI- , reBS- , reBI- , reMultilineSensitive- , reMultilineInsensitive- , reBlockSensitive- , reBlockInsensitive- , re_ :: QuasiQuoter- -- , ed- -- , edMS- -- , edMI- -- , edBS- -- , edBI- -- , edMultilineSensitive- -- , edMultilineInsensitive- -- , edBlockSensitive- -- , edBlockInsensitive- -- , ed_ :: QuasiQuoter-+-- | @[re| ... |]@, is equivalent to @[reMultilineSensitive| ... |]@,+-- compiling a case-sensitive, multi-line RE+re :: QuasiQuoter re = re' $ Just minBound-reMS = reMultilineSensitive-reMI = reMultilineInsensitive-reBS = reBlockSensitive-reBI = reBlockInsensitive++-- | @[reMultilineSensitive| ... |]@, compiles a case-sensitive, multi-line RE+reMultilineSensitive :: QuasiQuoter reMultilineSensitive = re' $ Just MultilineSensitive++-- | @[reMultilineInsensitive| ... |]@, compiles a case-insensitive, multi-line RE+reMultilineInsensitive :: QuasiQuoter reMultilineInsensitive = re' $ Just MultilineInsensitive++-- | @[reMultilineInsensitive| ... |]@, compiles a case-sensitive, non-multi-line RE+reBlockSensitive :: QuasiQuoter reBlockSensitive = re' $ Just BlockSensitive++-- | @[reMultilineInsensitive| ... |]@, compiles a case-insensitive, non-multi-line RE+reBlockInsensitive :: QuasiQuoter reBlockInsensitive = re' $ Just BlockInsensitive++-- | @[reMS| ... |]@ is a shorthand for @[reMultilineSensitive| ... |]@+reMS :: QuasiQuoter+reMS = reMultilineSensitive++-- | @[reMI| ... |]@ is a shorthand for @[reMultilineInsensitive| ... |]@+reMI :: QuasiQuoter+reMI = reMultilineInsensitive++-- | @[reBS| ... |]@ is a shorthand for @[reBlockSensitive| ... |]@+reBS :: QuasiQuoter+reBS = reBlockSensitive++-- | @[reBI| ... |]@ is a shorthand for @[reBlockInsensitive| ... |]@+reBI :: QuasiQuoter+reBI = reBlockInsensitive++-- | @[re_| ... |]@ compiles a RE to produce a function that takes+-- the RE options (e.g., a 'SimpleREOptions' value) and yields the+-- RE compiled with those options. For example,+--+-- @countMatches $ s *=~ [re_|[0-9a-f]+|] MultilineInsensitive@+--+-- counts the number of hexadecimal digit strings in 's', allowing+-- for upper- or lower-case hex didgits (which is entirely equivalent+-- in this example to just using @[reMultilineInsensitive|[0-9a-f]+|]@).+re_ :: QuasiQuoter re_ = re' Nothing
Text/RE/ZeInternals/Tools/Lex.lhs view
@@ -9,8 +9,10 @@ import Prelude.Compat import Text.RE.Replace import Text.RE.ZeInternals.Types.IsRegex+\end{code} +\begin{code} -- | a simple regex-based scanner interpretter for prototyping -- scanners alex :: IsRegex re s => [(re,Match s->Maybe t)] -> t -> s -> [t]
Text/RE/ZeInternals/Types/CaptureID.hs view
@@ -37,14 +37,10 @@ deriving (Show,Ord,Eq,Enum,Ix,Num) -- | look up a 'CaptureID' in the 'CaptureNames' dictionary-unsafeFindCaptureID :: CaptureID -> CaptureNames -> Int-unsafeFindCaptureID cid = either error id . findCaptureID cid---- | look up a 'CaptureID' in the 'CaptureNames' dictionary-findCaptureID :: CaptureID -> CaptureNames -> Either String Int-findCaptureID (IsCaptureOrdinal o) _ = Right $ getCaptureOrdinal o+findCaptureID :: CaptureID -> CaptureNames -> Either String CaptureOrdinal+findCaptureID (IsCaptureOrdinal o) _ = Right o findCaptureID (IsCaptureName n) hms =- maybe oops (Right . getCaptureOrdinal) $ HMS.lookup n hms+ maybe oops Right $ HMS.lookup n hms where oops = Left $ unlines $ ("lookupCaptureID: " ++ T.unpack t ++ " not found in:") :
Text/RE/ZeInternals/Types/IsRegex.lhs view
@@ -47,7 +47,9 @@ makeSearchReplace = makeSearchReplaceWith minBound makeEscaped = makeEscapedWith minBound makeEscapedWith o f = makeRegexWith o . f . packR . escapeREString . unpackR+\end{code} +\begin{code} -- | search and replace all matches in the argument text; e.g., this function -- will convert every YYYY-MM-DD format date in its argument text into a -- DD\/MM\/YYYY date:
Text/RE/ZeInternals/Types/Match.lhs view
@@ -39,10 +39,8 @@ \end{code} \begin{code}--- | the result of matching a RE to a text once, listing the text that--- was matched and the named captures in the RE and all of the substrings--- matched, with the text captured by the whole RE; a complete failure--- to match will be represented with an empty array (with bounds (0,-1))+-- | the result of matching a RE to a text once (with @?=~@), retaining+-- the text that was matched against data Match a = Match { matchSource :: !a -- ^ the whole source text@@ -81,7 +79,7 @@ matched :: Match a -> Bool matched = isJust . matchCapture --- | tests whether the RE matched the source text at all+-- | yields the text matched by the RE, Nothing if no match matchedText :: Match a -> Maybe a matchedText = fmap capturedText . matchCapture @@ -90,8 +88,8 @@ matchCapture :: Match a -> Maybe (Capture a) matchCapture = fmap fst . matchCaptures --- | the top-level capture and the sub captures if the text matched--- the RE, Nothing otherwise+-- | the main top-level capture (capture \'0'') and the sub captures+-- if the text matched the RE, @Nothing@ otherwise matchCaptures :: Match a -> Maybe (Capture a,[Capture a]) matchCaptures Match{..} = case rangeSize (bounds matchArray) == 0 of True -> Nothing@@ -143,14 +141,14 @@ captureMaybe :: CaptureID -> Match a -> Maybe (Capture a) captureMaybe cid mtch@Match{..} = do i <- lookupCaptureID cid mtch- cap <- case bounds matchArray `inRange` CaptureOrdinal i of- True -> Just $ matchArray ! CaptureOrdinal i+ cap <- case bounds matchArray `inRange` i of+ True -> Just $ matchArray ! i False -> Nothing case hasCaptured cap of True -> Just cap False -> Nothing -lookupCaptureID :: CaptureID -> Match a -> Maybe Int+lookupCaptureID :: CaptureID -> Match a -> Maybe CaptureOrdinal lookupCaptureID cid Match{..} = either (const Nothing) Just $ findCaptureID cid captureNames \end{code}
Text/RE/ZeInternals/Types/Matches.lhs view
@@ -26,8 +26,8 @@ \begin{code}--- | the result type to use when every match is needed, not just the--- first match of the RE against the source+-- | the result of matching a RE against a text (with @*=~@), retaining+-- the text that was matched against data Matches a = Matches { matchesSource :: !a -- ^ the source text being matched@@ -54,7 +54,7 @@ countMatches :: Matches a -> Int countMatches = length . allMatches --- | list the Matches+-- | list the texts that Matched matches :: Matches a -> [a] matches = map capturedText . mainCaptures
− Text/RE/ZeInternals/Types/SearchReplace.hs
@@ -1,15 +0,0 @@--module Text.RE.ZeInternals.Types.SearchReplace- ( SearchReplace(..)- ) where---- | contains a compiled RE and replacement template-data SearchReplace re s =- SearchReplace- { getSearch :: !re -- ^ the RE- , getTemplate :: !s -- ^ the replacement template- }- deriving (Show)--instance Functor (SearchReplace re) where- fmap f (SearchReplace re x) = SearchReplace re (f x)
+ Text/RE/ZeInternals/Types/SearchReplace.lhs view
@@ -0,0 +1,23 @@+\begin{code}+module Text.RE.ZeInternals.Types.SearchReplace+ ( SearchReplace(..)+ ) where+\end{code}++\begin{code}+-- | contains a compiled RE and replacement template+data SearchReplace re s =+ SearchReplace+ { getSearch :: !re -- ^ the RE to match a string to replace+ , getTemplate :: !s -- ^ the replacement template with ${cap}+ -- used to identify a capture (by number or+ -- name if one was given) and '$$' being+ -- used to escape a single '$'+ }+ deriving (Show)+\end{code}++\begin{code}+instance Functor (SearchReplace re) where+ fmap f (SearchReplace re x) = SearchReplace re (f x)+\end{code}
changelog view
@@ -1,5 +1,17 @@ -*-change-log-*- +1.0.0.0 Chris Dornan <chris.dornan@irisconnect.co.uk> 2017-04-10+ * Rewrite tutorials (#113)+ * Add Text.RE.Tools.IsRegex (#122)+ * Include Macro Parsers in Core API (#123)+ * Adjust type of lookupCaptureID and friends (#124)+ * re-prep to handle cast example expressions (#125)+ * Rename compileSearchReplaceWithOptions (#126)+ * Hide ZeInternals, Evacuate Text.RE (#127)+ * Proper Haddocks for the quasi quoters (#128)+ * ed_ quasi quoters are being restricted to SimpleREOptions (#129)+ * regex dependeny on pcre-builtin (#130)+ 0.14.0.0 Chris Dornan <chris.dornan@irisconnect.co.uk> 2017-04-05 * Move IsOption into the back ends (#115) * Rename Find functions (#116)@@ -71,7 +83,7 @@ * Fix .travis.yml release-stack script (#67) 0.6.0.0 Chris Dornan <chris.dornan@irisconnect.co.uk> 2017-03-13- * Split out rexex-with-pcre package (#65)+ * Split out regex-with-pcre package (#65) 0.5.0.0 Chris Dornan <chris.dornan@irisconnect.co.uk> 2017-03-05 * Fix inter-operation of =~ & =~~ and named captures (#55)
regex.cabal view
@@ -1,5 +1,5 @@ Name: regex-Version: 0.14.0.0+Version: 1.0.0.0 Synopsis: Toolkit for regex-base Description: A regular expression toolkit for regex-base with compile-time checking of RE syntax, data types for@@ -32,7 +32,7 @@ Source-Repository this Type: git Location: https://github.com/iconnect/regex.git- Tag: 0.14.0.0+ Tag: 1.0.0.0 @@ -51,13 +51,17 @@ Text.RE.TDFA.Text Text.RE.TDFA.Text.Lazy Text.RE.TestBench+ Text.RE.TestBench.Parsers Text.RE.Tools Text.RE.Tools.Edit Text.RE.Tools.Find Text.RE.Tools.Grep+ Text.RE.Tools.IsRegex Text.RE.Tools.Lex Text.RE.Tools.Sed Text.RE.ZeInternals++ Other-Modules: Text.RE.ZeInternals.AddCaptureNames Text.RE.ZeInternals.EscapeREString Text.RE.ZeInternals.NamedCaptures@@ -85,6 +89,7 @@ Text.RE.ZeInternals.Types.Matches Text.RE.ZeInternals.Types.SearchReplace + Default-Language: Haskell2010 Other-Extensions:@@ -125,7 +130,6 @@ , containers >= 0.4 , hashable >= 1.2.3.3 , regex-base >= 0.93.2- , regex-pcre-builtin >= 0.94.4.8.8.35 , regex-tdfa >= 1.2.0 , regex-tdfa-text >= 1.0.0.3 , template-haskell >= 2.7