Skip to content

Commit bd2f2ef

Browse files
rewrite to remove return in middle of loop
1 parent 8025f4b commit bd2f2ef

File tree

1 file changed

+20
-12
lines changed

1 file changed

+20
-12
lines changed

crates/djls-templates/src/lexer.rs

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ impl Lexer {
7070

7171
self.consume_n(TagDelimiter::LENGTH);
7272

73-
match self.consume_until(delimiter.closer()) {
73+
match self.consume_until_delimiter(delimiter.closer()) {
7474
Ok(text) => {
7575
let len = text.len();
7676
let span = Span::saturating_from_parts_usize(content_start, len);
@@ -166,7 +166,7 @@ impl Lexer {
166166
}
167167
}
168168

169-
fn consume_until(&mut self, delimiter: &str) -> Result<String, String> {
169+
fn consume_until_delimiter(&mut self, delimiter: &str) -> Result<String, String> {
170170
let offset = self.current;
171171

172172
if let Some(pos) = memmem::find(self.remaining_source().as_bytes(), delimiter.as_bytes()) {
@@ -180,23 +180,31 @@ impl Lexer {
180180

181181
fn consume_until_stop_char(&self) -> usize {
182182
let mut offset = 0;
183+
let max = self.source.len() - self.current;
183184

184-
loop {
185+
while offset < max {
185186
let remaining = &self.remaining_source()[offset..];
186187

187-
let Some(pos) = memchr3(b'{', b'\n', b'\r', remaining.as_bytes()) else {
188-
return self.source.len() - self.current;
189-
};
188+
match memchr3(b'{', b'\n', b'\r', remaining.as_bytes()) {
189+
None => {
190+
offset = max;
191+
break;
192+
}
193+
Some(pos) => {
194+
let is_newline = matches!(remaining.as_bytes()[pos], b'\n' | b'\r');
195+
let is_django_delimiter = TagDelimiter::from_input(&remaining[pos..]).is_some();
190196

191-
let is_newline = matches!(remaining.as_bytes()[pos], b'\n' | b'\r');
192-
let is_django_delimiter = TagDelimiter::from_input(&remaining[pos..]).is_some();
197+
if is_newline || is_django_delimiter {
198+
offset += pos;
199+
break;
200+
}
193201

194-
if is_newline || is_django_delimiter {
195-
return offset + pos;
202+
offset += pos + 1;
203+
}
196204
}
197-
198-
offset += pos + 1;
199205
}
206+
207+
offset
200208
}
201209
}
202210

0 commit comments

Comments
 (0)