mirror of
https://github.com/astral-sh/ruff.git
synced 2025-08-04 02:38:25 +00:00
Join implicit concatenated strings when they fit on a line (#13663)
This commit is contained in:
parent
e402e27a09
commit
73ee72b665
50 changed files with 3907 additions and 363 deletions
|
@ -506,7 +506,7 @@ pub enum StringLikePart<'a> {
|
|||
FString(&'a ast::FString),
|
||||
}
|
||||
|
||||
impl StringLikePart<'_> {
|
||||
impl<'a> StringLikePart<'a> {
|
||||
/// Returns the [`AnyStringFlags`] for the current string-like part.
|
||||
pub fn flags(&self) -> AnyStringFlags {
|
||||
match self {
|
||||
|
@ -525,6 +525,17 @@ impl StringLikePart<'_> {
|
|||
)
|
||||
}
|
||||
|
||||
pub const fn is_string_literal(self) -> bool {
|
||||
matches!(self, Self::String(_))
|
||||
}
|
||||
|
||||
pub const fn as_string_literal(self) -> Option<&'a ast::StringLiteral> {
|
||||
match self {
|
||||
StringLikePart::String(value) => Some(value),
|
||||
_ => None,
|
||||
}
|
||||
}
|
||||
|
||||
pub const fn is_fstring(self) -> bool {
|
||||
matches!(self, Self::FString(_))
|
||||
}
|
||||
|
@ -571,6 +582,7 @@ impl Ranged for StringLikePart<'_> {
|
|||
/// An iterator over all the [`StringLikePart`] of a string-like expression.
|
||||
///
|
||||
/// This is created by the [`StringLike::parts`] method.
|
||||
#[derive(Clone)]
|
||||
pub enum StringLikePartIter<'a> {
|
||||
String(std::slice::Iter<'a, ast::StringLiteral>),
|
||||
Bytes(std::slice::Iter<'a, ast::BytesLiteral>),
|
||||
|
@ -607,5 +619,25 @@ impl<'a> Iterator for StringLikePartIter<'a> {
|
|||
}
|
||||
}
|
||||
|
||||
impl DoubleEndedIterator for StringLikePartIter<'_> {
|
||||
fn next_back(&mut self) -> Option<Self::Item> {
|
||||
let part = match self {
|
||||
StringLikePartIter::String(inner) => StringLikePart::String(inner.next_back()?),
|
||||
StringLikePartIter::Bytes(inner) => StringLikePart::Bytes(inner.next_back()?),
|
||||
StringLikePartIter::FString(inner) => {
|
||||
let part = inner.next_back()?;
|
||||
match part {
|
||||
ast::FStringPart::Literal(string_literal) => {
|
||||
StringLikePart::String(string_literal)
|
||||
}
|
||||
ast::FStringPart::FString(f_string) => StringLikePart::FString(f_string),
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
Some(part)
|
||||
}
|
||||
}
|
||||
|
||||
impl FusedIterator for StringLikePartIter<'_> {}
|
||||
impl ExactSizeIterator for StringLikePartIter<'_> {}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue