use std::path::Path;
pub fn shell_quote_path(path: &Path) -> String {
shell_words::quote(&path.to_string_lossy()).into_owned()
}
pub fn escape_toml_basic_string(value: &str) -> String {
let mut out = String::with_capacity(value.len());
for ch in value.chars() {
match ch {
'"' => out.push_str("\\\""),
'\\' => out.push_str("\\\\"),
'\n' => out.push_str("\\n"),
'\t' => out.push_str("\\t"),
'\r' => out.push_str("\\r"),
c if (c as u32) < 0x20 || c == '\u{7f}' => {
out.push_str(&format!("\\u{:04X}", c as u32));
}
_ => out.push(ch),
}
}
out
}
pub fn toml_basic_string_literal(value: &str) -> String {
format!("\"{}\"", escape_toml_basic_string(value))
}
pub fn looks_like_windows_drive_path(value: &str) -> bool {
let bytes = value.as_bytes();
bytes.len() >= 2 && bytes[0].is_ascii_alphabetic() && bytes[1] == b':'
}