Move string-prefix enumerations to a separate submodule (#11425)

## Summary

This moves the string-prefix enumerations in `ruff_python_ast` to a
separate submodule. I think this helps clarify that these prefixes are
purely abstract: they only depend on each other, and do not depend on
any of the other code in `nodes.rs` in any way. Moreover, while various
AST nodes _use_ them, they're not really nodes themselves, so they feel
slightly out of place in `nodes.rs`.

I considered moving all of them to `str.rs`, but it felt like enough
code that it could be a separate submodule.

## Test Plan

`cargo test`
This commit is contained in:
Alex Waygood 2024-05-15 07:40:27 -04:00 committed by GitHub
parent effe3ad4ef
commit 6963f75a14
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 290 additions and 274 deletions

View file

@ -2,7 +2,11 @@ pub(crate) use any::AnyString;
pub(crate) use normalize::{normalize_string, NormalizedString, StringNormalizer};
use ruff_formatter::format_args;
use ruff_python_ast::str::Quote;
use ruff_python_ast::{self as ast, AnyStringFlags, AnyStringPrefix};
use ruff_python_ast::{
self as ast,
str_prefix::{AnyStringPrefix, StringLiteralPrefix},
AnyStringFlags,
};
use ruff_text_size::{Ranged, TextRange};
use crate::comments::{leading_comments, trailing_comments};
@ -58,9 +62,7 @@ impl Format<PyFormatContext<'_>> for AnyStringPrefix {
// Remove the unicode prefix `u` if any because it is meaningless in Python 3+.
if !matches!(
self,
AnyStringPrefix::Regular(
ast::StringLiteralPrefix::Empty | ast::StringLiteralPrefix::Unicode
)
AnyStringPrefix::Regular(StringLiteralPrefix::Empty | StringLiteralPrefix::Unicode)
) {
token(self.as_str()).fmt(f)?;
}

View file

@ -693,7 +693,11 @@ impl UnicodeEscape {
mod tests {
use std::borrow::Cow;
use ruff_python_ast::{str::Quote, AnyStringFlags, AnyStringPrefix, ByteStringPrefix};
use ruff_python_ast::{
str::Quote,
str_prefix::{AnyStringPrefix, ByteStringPrefix},
AnyStringFlags,
};
use super::{normalize_string, UnicodeEscape};