mirror of
https://github.com/RustPython/Parser.git
synced 2025-09-01 08:07:50 +00:00
Address comments
This commit is contained in:
parent
9efa872023
commit
7f552e4594
3 changed files with 35 additions and 15 deletions
|
@ -240,19 +240,30 @@ pub enum StringKind {
|
|||
Unicode,
|
||||
}
|
||||
|
||||
impl TryFrom<String> for StringKind {
|
||||
impl TryFrom<char> for StringKind {
|
||||
type Error = String;
|
||||
|
||||
fn try_from(value: String) -> Result<Self, String> {
|
||||
match value.as_str() {
|
||||
"" => Ok(StringKind::String),
|
||||
"r" | "R" => Ok(StringKind::RawString),
|
||||
"u" | "U" => Ok(StringKind::Unicode),
|
||||
"b" | "B" => Ok(StringKind::Bytes),
|
||||
"f" | "F" => Ok(StringKind::FString),
|
||||
"fr" | "Fr" | "fR" | "FR" | "rf" | "rF" | "Rf" | "RF" => Ok(StringKind::RawFString),
|
||||
"br" | "Br" | "bR" | "BR" | "rb" | "rB" | "Rb" | "RB" => Ok(StringKind::RawBytes),
|
||||
s => Err(format!("Unexpected string prefix: {s}")),
|
||||
fn try_from(ch: char) -> Result<Self, String> {
|
||||
match ch {
|
||||
'r' | 'R' => Ok(StringKind::RawString),
|
||||
'f' | 'F' => Ok(StringKind::FString),
|
||||
'u' | 'U' => Ok(StringKind::Unicode),
|
||||
'b' | 'B' => Ok(StringKind::Bytes),
|
||||
c => Err(format!("Unexpected string prefix: {c}")),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl TryFrom<[char; 2]> for StringKind {
|
||||
type Error = String;
|
||||
|
||||
fn try_from(chars: [char; 2]) -> Result<Self, String> {
|
||||
match chars {
|
||||
['r' | 'R', 'f' | 'F'] => Ok(StringKind::RawFString),
|
||||
['f' | 'F', 'r' | 'R'] => Ok(StringKind::RawFString),
|
||||
['r' | 'R', 'b' | 'B'] => Ok(StringKind::RawBytes),
|
||||
['b' | 'B', 'r' | 'R'] => Ok(StringKind::RawBytes),
|
||||
[c1, c2] => Err(format!("Unexpected string prefix: {c1}{c2}")),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -291,4 +302,13 @@ impl StringKind {
|
|||
pub fn is_unicode(&self) -> bool {
|
||||
matches!(self, StringKind::Unicode)
|
||||
}
|
||||
|
||||
pub fn prefix_len(&self) -> usize {
|
||||
use StringKind::*;
|
||||
match self {
|
||||
String => 0,
|
||||
RawString | FString | Unicode | Bytes => 1,
|
||||
RawFString | RawBytes => 2,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue