Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- parseGrepOutput :: [Text] -> [FileLineReference]
- parseLine :: Text -> Maybe FileLineReference
- data FileLineReference
Parsing grep
output
parseGrepOutput :: [Text] -> [FileLineReference] Source #
Parses lines of Text
, skipping lines that are not valid grep
output.
parseLine :: Text -> Maybe FileLineReference Source #
Parses a line of grep
output. Returns Nothing
if the line cannot
be parsed.
The output should consist of a file name, line number and the content, separated by colons:
>>>
parseLine "path/to/file:123:foobar"
Just (FileLineReference {_file = File {_fileName = "path/to/file"}, _lineReference = LineReference {_lineNumber = Just 123, _lineText = Text 6 "foobar"}})
Omitting the line number still produces valid output:
>>>
parseLine "path/to/file:foobar"
Just (FileLineReference {_file = File {_fileName = "path/to/file"}, _lineReference = LineReference {_lineNumber = Nothing, _lineText = Text 6 "foobar"}})
However, an file name must be present:
>>>
parseLine "foobar"
Nothing
ANSI escape codes in the line text are parsed correctly:
>>>
parseLine "path/to/file:foo\ESC[31mbar\ESC[mbaz"
Just (FileLineReference {_file = File {_fileName = "path/to/file"}, _lineReference = LineReference {_lineNumber = Nothing, _lineText = Cat 9 [Text 3 "foo",Format 3 (Attr {attrStyle = KeepCurrent, attrForeColor = SetTo (ISOColor 1), attrBackColor = KeepCurrent, attrURL = KeepCurrent}) (Text 3 "bar"),Text 3 "baz"]}})
Re-export
data FileLineReference Source #
Instances
Eq FileLineReference Source # | |
Defined in Vgrep.Results (==) :: FileLineReference -> FileLineReference -> Bool # (/=) :: FileLineReference -> FileLineReference -> Bool # | |
Show FileLineReference Source # | |
Defined in Vgrep.Results showsPrec :: Int -> FileLineReference -> ShowS # show :: FileLineReference -> String # showList :: [FileLineReference] -> ShowS # |