11 releases (7 breaking)
0.8.1 | Apr 20, 2020 |
---|---|
0.7.1 | Aug 29, 2019 |
0.7.0 | Jun 14, 2019 |
0.5.0 | Mar 31, 2019 |
0.2.0 | Nov 30, 2018 |
#479 in Command-line interface
64 downloads per month
Used in 9 crates
(6 directly)
1.5MB
1.5K
SLoC
prettyprint
Syntax highlighting library with batteries included.
⚠️ For new projects, you might want to use
bat
instead, which can be used as a library now.prettyprint
is in maintenance mode now, which means it will not see any major updates anymore, but pull requests will still be reviewed and dependencies will be kept up-to-date for the time being. You might want consider migrating away, though.
Quick start
The above output was created with the following code:
let printer = PrettyPrinter::default()
.language("rust")
.build()?;
printer.file("fixtures/fib.rs")?;
Note that prettyprint
is a builder and can be customized. For example, if you don't like the grid or the header, you can disable those:
let printer = PrettyPrinter::default()
.header(false)
.grid(false)
.language("ruby")
.build()?;
let example = r#"
def fib(n)
return 1 if n <= 1
fib(n-1) + fib(n-2)
end
"#;
printer.string_with_header(example, "fib.rb")?;
"What!? It can also print strings, Matthias? That's insane."
It's true. You're welcome.
Installation
Add this to your Cargo.toml
:
prettyprint = "*"
But why?
syntect
is a great package for highlighting text.
When writing a command-line tool that prints text however, you might be looking for some additional functionality.
- Line numbers
- More built-in color-themes
- Automatic pagination
- Proper terminal handling
- Showing non-printable characters
- File headers
- Windows support
prettyprint
offers all of this in one crate (thanks to bat).
Known limitations
- Doesn't run on
no-std
targets. I don't plan to support those.
Credits
prettyprint
is simply a fork of bat
, with some functionality stripped out and bundled up as a library.
I built it, because I needed it for cargo-inspect.
All credits go to the original authors.
Dependencies
~15–25MB
~376K SLoC