Add syntaxes and themes method

pull/940/head
sharkdp 4 years ago committed by David Peter
parent cba9df746e
commit 53a973e9dd

@ -1,5 +1,5 @@
/// A program that prints its own source code using the bat library
use bat::{LineRange, PrettyPrinter, WrappingMode, PagingMode};
use bat::{LineRange, PagingMode, PrettyPrinter, WrappingMode};
fn main() {
PrettyPrinter::new()

@ -0,0 +1,18 @@
/// A simple program that prints its own source code using the bat library
use bat::PrettyPrinter;
fn main() {
let printer = PrettyPrinter::new();
println!("Syntaxes:");
for syntax in printer.syntaxes() {
println!("- {} ({})", syntax.name, syntax.file_extensions.join(", "));
}
println!();
println!("Themes:");
for theme in printer.themes() {
println!("- {}", theme);
}
}

@ -164,8 +164,8 @@ impl HighlightingAssets {
self.syntax_set.syntaxes()
}
pub fn themes(&self) -> impl Iterator<Item = &String> {
self.theme_set.themes.keys()
pub fn themes(&self) -> impl Iterator<Item = &str> {
self.theme_set.themes.keys().map(|s| s.as_ref())
}
pub(crate) fn get_theme(&self, theme: &str) -> &Theme {

@ -2,6 +2,7 @@ use std::ffi::OsStr;
use std::io::Read;
use console::Term;
use syntect::parsing::SyntaxReference;
use crate::{
assets::HighlightingAssets,
@ -201,6 +202,14 @@ impl<'a> PrettyPrinter<'a> {
self
}
pub fn themes(&self) -> impl Iterator<Item = &str> {
self.assets.themes()
}
pub fn syntaxes(&self) -> impl Iterator<Item = &SyntaxReference> {
self.assets.syntaxes().iter()
}
/// Pretty-print all specified inputs. This method will "use" all stored inputs.
/// If you want to call 'print' multiple times, you have to call the appropriate
/// input_* methods again.

Loading…
Cancel
Save