regex- Toolkit for regex-base

Safe HaskellNone




The Tools


sed :: IsRegex re ByteString => Edits IO re ByteString -> FilePath -> FilePath -> IO () Source #

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

sed' :: (IsRegex re a, Monad m, Functor m) => Edits m re a -> a -> m a Source #

apply an Edits script to each line of the argument text


grep :: IsRegex re ByteString => Verbosity -> re -> FilePath -> IO () Source #

operates a bit like classic grep printing out the lines matched

grepLines :: IsRegex re ByteString => re -> FilePath -> IO [Line] Source #

returns a Line for each line in the file enumerating all of the matches for that line.

type GrepScript re s t = [(re, LineNo -> Matches s -> Maybe t)] Source #

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

grepScript :: IsRegex re s => GrepScript re s t -> [s] -> [t] Source #

given a list of lines, apply the GrepScript to each line of the file

linesMatched :: Verbosity -> [Line] -> [Line] Source #

given a velocity flag filter out either the lines matched or not matched


alex :: IsRegex re s => [(re, Match s -> Maybe t)] -> t -> s -> [t] Source #

a simple regex-based scanner interpretter for prototyping scanners

alex' :: Replace s => (re -> s -> Match s) -> [(re, Match s -> Maybe t)] -> t -> s -> [t] Source #

a higher order version of alex parameterised over the matchOnce function


class Replace s => IsRegex re s where Source #

Minimal complete definition

matchOnce, matchMany, makeRegex, makeRegexWith, regexSource


matchOnce :: re -> s -> Match s Source #

matchMany :: re -> s -> Matches s Source #

makeRegex :: (Functor m, Monad m) => s -> m re Source #

makeRegexWith :: (Functor m, Monad m) => SimpleRegexOptions -> s -> m re Source #

regexSource :: re -> s Source #


data Edits m re s Source #

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


Select [(re, Edit m s)] 
Pipe [(re, Edit m s)] 

data Edit m s Source #

each Edit action specifies how the match should be processed


Template s 
Function Context (LineNo -> Match s -> Location -> Capture s -> m (Maybe s)) 
LineEdit (LineNo -> Matches s -> m (LineEdit s)) 

data LineEdit s Source #

a LineEdit is the most general action thar can be performed on a line and is the only means of deleting a line


ReplaceWith s 


Show s => Show (LineEdit s) Source # 


showsPrec :: Int -> LineEdit s -> ShowS #

show :: LineEdit s -> String #

showList :: [LineEdit s] -> ShowS #

applyEdits :: (IsRegex re s, Monad m, Functor m) => LineNo -> Edits m re s -> s -> m s Source #

apply an Edit script to a single line

applyEdit :: (IsRegex re s, Monad m, Functor m) => (s -> s) -> LineNo -> re -> Edit m s -> s -> m (Maybe s) Source #

apply a single edit action to a line, the function in the first argument being used to add a new line onto the end of the line where appropriate; the function returns Nothing if no edit is to be performed on the line, Just mempty to delete the line

applyLineEdit :: Monoid s => (s -> s) -> LineEdit s -> Maybe s Source #

apply a LineEdit to a line, using the function in the first argument to append a new line to the result; Nothing should be returned if no edit is to be performed, Just mempty to delete the line



module Text.RE