Skip to content

Commit 12dc7da

Browse files
committed
refactor: add helper
1 parent 6e6cfb2 commit 12dc7da

File tree

1 file changed

+18
-26
lines changed
  • crates/pgt_workspace/src/workspace/server

1 file changed

+18
-26
lines changed

crates/pgt_workspace/src/workspace/server/change.rs

Lines changed: 18 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -249,19 +249,7 @@ impl Document {
249249

250250
// if within a statement, we can modify it if the change results in also a single statement
251251
if affected_indices.len() == 1 {
252-
let start_byte = new_content
253-
.char_indices()
254-
.nth(usize::from(affected_range.start()))
255-
.map(|(i, _)| i)
256-
.unwrap_or(new_content.len());
257-
258-
let end_byte = new_content
259-
.char_indices()
260-
.nth(usize::from(affected_range.end()))
261-
.map(|(i, _)| i)
262-
.unwrap_or(new_content.len());
263-
264-
let changed_content = &new_content[start_byte..end_byte];
252+
let changed_content = get_affected(&new_content, affected_range);
265253

266254
let (new_ranges, diags) =
267255
document::split_with_diagnostics(changed_content, Some(affected_range.start()));
@@ -314,19 +302,7 @@ impl Document {
314302
}
315303

316304
// in any other case, parse the full affected range
317-
let start_byte = new_content
318-
.char_indices()
319-
.nth(usize::from(full_affected_range.start()))
320-
.map(|(i, _)| i)
321-
.unwrap_or(new_content.len());
322-
323-
let end_byte = new_content
324-
.char_indices()
325-
.nth(usize::from(full_affected_range.end()))
326-
.map(|(i, _)| i)
327-
.unwrap_or(new_content.len());
328-
329-
let changed_content = &new_content[start_byte..end_byte];
305+
let changed_content = get_affected(&new_content, full_affected_range);
330306

331307
let (new_ranges, diags) =
332308
document::split_with_diagnostics(changed_content, Some(full_affected_range.start()));
@@ -430,6 +406,22 @@ impl ChangeParams {
430406
}
431407
}
432408

409+
fn get_affected(content: &str, range: TextRange) -> &str {
410+
let start_byte = content
411+
.char_indices()
412+
.nth(usize::from(range.start()))
413+
.map(|(i, _)| i)
414+
.unwrap_or(content.len());
415+
416+
let end_byte = content
417+
.char_indices()
418+
.nth(usize::from(range.end()))
419+
.map(|(i, _)| i)
420+
.unwrap_or(content.len());
421+
422+
&content[start_byte..end_byte]
423+
}
424+
433425
#[cfg(test)]
434426
mod tests {
435427
use super::*;

0 commit comments

Comments
 (0)