[−][src]Crate grep_printer
This crate provides featureful and fast printers that interoperate with the
grep-searcher
crate.
Brief overview
The Standard
printer shows results in a human
readable format, and is modeled after the formats used by standard grep-like
tools. Features include, but are not limited to, cross platform terminal
coloring, search & replace, multi-line result handling and reporting summary
statistics.
The JSON
printer shows results in a machine readable
format. To facilitate a stream of search results, the format uses
JSON Lines
by emitting a series of messages as search results are found.
The Summary
printer shows aggregate results for a
single search in a human readable format, and is modeled after similar formats
found in standard grep-like tools. This printer is useful for showing the total
number of matches and/or printing file paths that either contain or don't
contain matches.
Example
This example shows how to create a "standard" printer and execute a search.
extern crate grep_regex; extern crate grep_printer; extern crate grep_searcher; use std::error::Error; use grep_regex::RegexMatcher; use grep_printer::Standard; use grep_searcher::Searcher; const SHERLOCK: &'static [u8] = b"\ For the Doctor Watsons of this world, as opposed to the Sherlock Holmeses, success in the province of detective work must always be, to a very large extent, the result of luck. Sherlock Holmes can extract a clew from a wisp of straw or a flake of cigar ash; but Doctor Watson has to have it taken out for him and dusted, and exhibited clearly, with a label attached. "; fn example() -> Result<(), Box<Error>> { let matcher = RegexMatcher::new(r"Sherlock")?; let mut printer = Standard::new_no_color(vec![]); Searcher::new().search_slice(&matcher, SHERLOCK, printer.sink(&matcher))?; // into_inner gives us back the underlying writer we provided to // new_no_color, which is wrapped in a termcolor::NoColor. Thus, a second // into_inner gives us back the actual buffer. let output = String::from_utf8(printer.into_inner().into_inner())?; let expected = "\ 1:For the Doctor Watsons of this world, as opposed to the Sherlock 3:be, to a very large extent, the result of luck. Sherlock Holmes "; assert_eq!(output, expected); Ok(()) }
Structs
ColorSpecs | A merged set of color specifications. |
JSON | The JSON printer, which emits results in a JSON lines format. |
JSONBuilder | A builder for a JSON lines printer. |
JSONSink | An implementation of |
PrinterPath | A simple encapsulation of a file path used by a printer. |
Standard | The standard printer, which implements grep-like formatting, including color support. |
StandardBuilder | A builder for the "standard" grep-like printer. |
StandardSink | An implementation of |
Stats | Summary statistics produced at the end of a search. |
Summary | The summary printer, which emits aggregate results from a search. |
SummaryBuilder | A builder for summary printer. |
SummarySink | An implementation of |
UserColorSpec | A single color specification provided by the user. |
Enums
ColorError | An error that can occur when parsing color specifications. |
SummaryKind | The type of summary output (if any) to print. |
Functions
default_color_specs | Returns a default set of color specifications. |