Respect file_lines within format_lines() function

This commit is contained in:
Jonathan Behrens 2017-05-06 15:14:44 -04:00
parent 75a13868da
commit 7c6479358b
No known key found for this signature in database
GPG key ID: 91499BA7543B1F47
2 changed files with 39 additions and 17 deletions

View file

@ -144,6 +144,20 @@ impl FileLines {
Err(_) => false, 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. /// FileLines files iterator.

View file

@ -481,27 +481,35 @@ fn format_lines(text: &mut StringBuffer, name: &str, config: &Config, report: &m
continue; continue;
} }
// Add warnings for bad todos/ fixmes let format_line = config.file_lines.contains_line(name, cur_line as usize);
if let Some(issue) = issue_seeker.inspect(c) {
errors.push(FormattingError { if format_line {
line: cur_line, // Add warnings for bad todos/ fixmes
kind: ErrorKind::BadIssue(issue), if let Some(issue) = issue_seeker.inspect(c) {
}); errors.push(FormattingError {
line: cur_line,
kind: ErrorKind::BadIssue(issue),
});
}
} }
if c == '\n' { if c == '\n' {
// Check for (and record) trailing whitespace. if format_line {
if let Some(lw) = last_wspace { // Check for (and record) trailing whitespace.
trims.push((cur_line, lw, b)); if let Some(lw) = last_wspace {
line_len -= 1; trims.push((cur_line, lw, b));
} line_len -= 1;
// Check for any line width errors we couldn't correct. }
if config.error_on_line_overflow && line_len > config.max_width {
errors.push(FormattingError { // Check for any line width errors we couldn't correct.
line: cur_line, if config.error_on_line_overflow && line_len > config.max_width {
kind: ErrorKind::LineOverflow(line_len, config.max_width), errors.push(FormattingError {
}); line: cur_line,
kind: ErrorKind::LineOverflow(line_len, config.max_width),
});
}
} }
line_len = 0; line_len = 0;
cur_line += 1; cur_line += 1;
newline_count += 1; newline_count += 1;