(line: &str)
| 258 | } |
| 259 | |
| 260 | fn parse_hunk_header(line: &str) -> Result<Option<(usize, usize, usize, usize)>> { |
| 261 | if !line.starts_with("@@ ") || !line.ends_with(" @@") { |
| 262 | return Ok(None); |
| 263 | } |
| 264 | let body = &line[3..line.len() - 3]; |
| 265 | let mut parts = body.split_whitespace(); |
| 266 | let old_part = parts |
| 267 | .next() |
| 268 | .ok_or_else(|| anyhow!("missing old hunk range"))?; |
| 269 | let new_part = parts |
| 270 | .next() |
| 271 | .ok_or_else(|| anyhow!("missing new hunk range"))?; |
| 272 | let (old_start, old_len) = parse_hunk_range(old_part, '-')?; |
| 273 | let (new_start, new_len) = parse_hunk_range(new_part, '+')?; |
| 274 | Ok(Some((old_start, old_len, new_start, new_len))) |
| 275 | } |
| 276 | |
| 277 | fn parse_hunk_range(value: &str, prefix: char) -> Result<(usize, usize)> { |
| 278 | let trimmed = value |
no test coverage detected
searching dependent graphs…