/// Extracts ranges, marked with `<tag> </tag>` pairs from the `text`
pub fn extract_tags(mut text: &str, tag: &str) -> (Vec<(TextRange, Option<String>)>, String) {
- let open = format!("<{}", tag);
- let close = format!("</{}>", tag);
+ let open = format!("<{tag}");
+ let close = format!("</{tag}>");
let mut ranges = Vec::new();
let mut res = String::new();
let mut stack = Vec::new();
stack.push((from, attr));
} else if text.starts_with(&close) {
text = &text[close.len()..];
- let (from, attr) =
- stack.pop().unwrap_or_else(|| panic!("unmatched </{}>", tag));
+ let (from, attr) = stack.pop().unwrap_or_else(|| panic!("unmatched </{tag}>"));
let to = TextSize::of(&res);
ranges.push((TextRange::new(from, to), attr));
} else {
}
}
}
- assert!(stack.is_empty(), "unmatched <{}>", tag);
+ assert!(stack.is_empty(), "unmatched <{tag}>");
ranges.sort_by_key(|r| (r.0.start(), r.0.end()));
(ranges, res)
}
eprintln!("ignoring slow test");
} else {
let path = project_root().join("./target/.slow_tests_cookie");
- fs::write(&path, ".").unwrap();
+ fs::write(path, ".").unwrap();
}
should_skip
}
for chunk in chunks {
let formatted = match chunk {
dissimilar::Chunk::Equal(text) => text.into(),
- dissimilar::Chunk::Delete(text) => format!("\x1b[41m{}\x1b[0m", text),
- dissimilar::Chunk::Insert(text) => format!("\x1b[42m{}\x1b[0m", text),
+ dissimilar::Chunk::Delete(text) => format!("\x1b[41m{text}\x1b[0m"),
+ dissimilar::Chunk::Insert(text) => format!("\x1b[42m{text}\x1b[0m"),
};
buf.push_str(&formatted);
}
}
_ => (),
}
- let display_path = file.strip_prefix(&project_root()).unwrap_or(file);
+ let display_path = file.strip_prefix(project_root()).unwrap_or(file);
eprintln!(
"\n\x1b[31;1merror\x1b[0m: {} was not up-to-date, updating\n",
display_path.display()