diff --git a/src/config.rs b/src/config.rs index ec68fae..0dad1a1 100644 --- a/src/config.rs +++ b/src/config.rs @@ -7,6 +7,8 @@ pub struct Config { pub ignore_case: bool, pub path: String, pub use_gitignore: bool, + pub omit_filenames: bool, + pub match_only: bool, } impl Config { @@ -36,6 +38,16 @@ impl Config { .long("no-gitignore") .help("Include results that are specified in .gitignore"), ) + .arg( + Arg::with_name("omit filenames") + .short("h") + .help("Omit file names in results"), + ) + .arg( + Arg::with_name("only match") + .short("o") + .help("Only print matched text") + ) .get_matches(); Config { @@ -43,6 +55,8 @@ impl Config { ignore_case: matches.is_present("ignore case"), path: String::from(matches.value_of("path").unwrap()), use_gitignore: !matches.is_present("gitignore"), + omit_filenames: matches.is_present("omit filenames"), + match_only: matches.is_present("only match"), } } } diff --git a/src/printer.rs b/src/printer.rs index a855c9f..be2a620 100644 --- a/src/printer.rs +++ b/src/printer.rs @@ -43,15 +43,21 @@ impl<'a> Printer for SimplePrinter<'a> { impl<'a> SimplePrinter<'a> { fn print_file_name(&self) { - println!("{}:", self.file_match.file_name); + if !self.config.omit_filenames { + println!("{}:", self.file_match.file_name); + } } fn print_linenumber(&self, mat: &Match) { - print!("{}: ", mat.line_number); + if !self.config.omit_filenames { + print!("{}: ", mat.line_number); + } } fn print_first_part_of_line(&self, mat: &Match, current_position: usize, match_start: usize) { - print!("{}", mat.text.get(current_position..match_start).unwrap()); + if !self.config.match_only { + print!("{}", mat.text.get(current_position..match_start).unwrap()); + } } fn print_match(&self, mat: &Match, index: &MatchIndex) { @@ -59,7 +65,11 @@ impl<'a> SimplePrinter<'a> { } fn print_end_of_line(&self, mat: &Match, index: &MatchIndex) { - println!("{}", mat.text.get(index.end..mat.text.len()).unwrap()); + if !self.config.match_only { + println!("{}", mat.text.get(index.end..mat.text.len()).unwrap()); + } else { + println!(); + } } }