Add -s/--case-sensitive flag.

This flag overrides both --smart-case and --ignore-case.

Closes #124.
This commit is contained in:
Andrew Gallant
2016-09-28 16:30:57 -04:00
parent 316ffd87b3
commit 925d0db9f0
5 changed files with 96 additions and 37 deletions

View File

@@ -159,6 +159,7 @@ impl FileTypeDef {
/// Types is a file type matcher.
#[derive(Clone, Debug)]
pub struct Types {
defs: Vec<FileTypeDef>,
selected: Option<glob::SetYesNo>,
negated: Option<glob::SetYesNo>,
has_selected: bool,
@@ -176,8 +177,10 @@ impl Types {
selected: Option<glob::SetYesNo>,
negated: Option<glob::SetYesNo>,
has_selected: bool,
defs: Vec<FileTypeDef>,
) -> Types {
Types {
defs: defs,
selected: selected,
negated: negated,
has_selected: has_selected,
@@ -193,7 +196,7 @@ impl Types {
/// Creates a new file type matcher that never matches.
pub fn empty() -> Types {
Types::new(None, None, false)
Types::new(None, None, false, vec![])
}
/// Returns a match for the given path against this file type matcher.
@@ -233,6 +236,11 @@ impl Types {
Match::None
}
}
/// Return the set of current file type definitions.
pub fn definitions(&self) -> &[FileTypeDef] {
&self.defs
}
}
/// TypesBuilder builds a type matcher from a set of file type definitions and
@@ -298,7 +306,11 @@ impl TypesBuilder {
Some(try!(bset.build_yesno()))
};
Ok(Types::new(
selected_globs, negated_globs, !self.selected.is_empty()))
selected_globs,
negated_globs,
!self.selected.is_empty(),
self.definitions(),
))
}
/// Return the set of current file type definitions.