about summary refs log tree commit diff
path: root/src/file_lines.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/file_lines.rs')
-rw-r--r--src/file_lines.rs14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/file_lines.rs b/src/file_lines.rs
index a20c8c4d3b3..3db75e1ce7e 100644
--- a/src/file_lines.rs
+++ b/src/file_lines.rs
@@ -144,6 +144,20 @@ impl FileLines {
             Err(_) => false,
         }
     }
+
+    pub fn contains_line(&self, file_name: &str, line: usize) -> bool {
+        let map = match self.0 {
+            // `None` means "all lines in all files".
+            None => return true,
+            Some(ref map) => map,
+        };
+
+        match canonicalize_path_string(file_name)
+                  .and_then(|canonical| map.get_vec(&canonical).ok_or(())) {
+            Ok(ranges) => ranges.iter().any(|r| r.lo <= line && r.hi >= line),
+            Err(_) => false,
+        }
+    }
 }
 
 /// FileLines files iterator.