MCPcopy Index your code
hub / github.com/RustPython/RustPython / normalize_joined_str_parts

Function normalize_joined_str_parts

crates/vm/src/stdlib/_ast/string.rs:63–91  ·  view source on GitHub ↗
(values: Vec<JoinedStrPart>)

Source from the content-addressed store, hash-verified

61}
62
63fn normalize_joined_str_parts(values: Vec<JoinedStrPart>) -> Vec<JoinedStrPart> {
64 let mut output = Vec::with_capacity(values.len());
65 let mut pending: Option<(String, StringLiteralPrefix, TextRange)> = None;
66
67 for part in values {
68 match part {
69 JoinedStrPart::Constant(constant) => {
70 let ConstantLiteral::Str { value, prefix } = constant.value else {
71 push_joined_str_literal(&mut output, &mut pending);
72 output.push(JoinedStrPart::Constant(constant));
73 continue;
74 };
75 let value: String = value.into();
76 if let Some((pending_value, _, _)) = pending.as_mut() {
77 pending_value.push_str(&value);
78 } else {
79 pending = Some((value, prefix, constant.range));
80 }
81 }
82 JoinedStrPart::FormattedValue(value) => {
83 push_joined_str_literal(&mut output, &mut pending);
84 output.push(JoinedStrPart::FormattedValue(value));
85 }
86 }
87 }
88
89 push_joined_str_literal(&mut output, &mut pending);
90 output
91}
92
93fn push_template_str_literal(
94 output: &mut Vec<TemplateStrPart>,

Callers 2

fstring_to_objectFunction · 0.85

Calls 8

push_joined_str_literalFunction · 0.85
FormattedValueClass · 0.85
ConstantClass · 0.70
SomeClass · 0.50
lenMethod · 0.45
pushMethod · 0.45
as_mutMethod · 0.45
push_strMethod · 0.45

Tested by

no test coverage detected