diff --git a/ignore/src/dir.rs b/ignore/src/dir.rs index 6ac00627..ebc2c699 100644 --- a/ignore/src/dir.rs +++ b/ignore/src/dir.rs @@ -360,19 +360,8 @@ impl Ignore { } let m_global = self.0.git_global_matcher.matched(&path, is_dir) .map(IgnoreMatch::gitignore); - if !m_ignore.is_none() { - m_ignore - } else if !m_gi.is_none() { - m_gi - } else if !m_gi_exclude.is_none() { - m_gi_exclude - } else if !m_global.is_none() { - m_global - } else if !m_explicit.is_none() { - m_explicit - } else { - Match::None - } + + m_ignore.or(m_gi).or(m_gi_exclude).or(m_global).or(m_explicit) } /// Returns an iterator over parent ignore matchers, including this one. diff --git a/ignore/src/lib.rs b/ignore/src/lib.rs index a3aa0c8f..9d979275 100644 --- a/ignore/src/lib.rs +++ b/ignore/src/lib.rs @@ -297,4 +297,13 @@ impl Match { Match::Whitelist(t) => Match::Whitelist(f(t)), } } + + /// Return the match if it is not none. Otherwise, return other. + pub fn or(self, other: Self) -> Self { + if self.is_none() { + other + } else { + self + } + } }