Move Python whitespace utilities into new ruff_python_whitespace crate (#4993)

## Summary

`ruff_newlines` becomes `ruff_python_whitespace`, and includes the
existing "universal newline" handlers alongside the Python
whitespace-specific utilities.
This commit is contained in:
Charlie Marsh 2023-06-09 20:59:57 -04:00 committed by GitHub
parent e86f12a1ec
commit 1d756dc3a7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
57 changed files with 153 additions and 140 deletions

View file

@ -0,0 +1,22 @@
//! Utilities for parsing Python docstrings.
/// Extract the leading words from a line of text within a Python docstring.
pub fn leading_words(line: &str) -> &str {
let line = line.trim();
line.find(|char: char| !char.is_alphanumeric() && !char.is_whitespace())
.map_or(line, |index| &line[..index])
}
/// Extract the leading whitespace from a line of text within a Python docstring.
pub fn leading_space(line: &str) -> &str {
line.find(|char: char| !char.is_whitespace())
.map_or(line, |index| &line[..index])
}
/// Replace any non-whitespace characters from an indentation string within a Python docstring.
pub fn clean_space(indentation: &str) -> String {
indentation
.chars()
.map(|char| if char.is_whitespace() { char } else { ' ' })
.collect()
}