MCPcopy Create free account
hub / github.com/atomicdotdev/atomic / next

Method next

atomic-core/src/diff/display.rs:362–479  ·  view source on GitHub ↗
(&mut self)

Source from the content-addressed store, hash-verified

360 type Item = DisplayLine<'a>;
361
362 fn next(&mut self) -> Option<Self::Item> {
363 loop {
364 if self.op_idx >= self.diff.diff_result.len() {
365 return None;
366 }
367
368 let op = &self.diff.diff_result.ops()[self.op_idx];
369
370 match op {
371 DiffOp::Equal {
372 old_pos,
373 new_pos: _,
374 len,
375 } => {
376 if self.pos_in_op < *len {
377 let line_idx = old_pos + self.pos_in_op;
378 let raw = self.diff.old_lines.get(line_idx)?.content();
379
380 let display_line = DisplayLine::new(
381 LineStatus::Unchanged,
382 raw,
383 Some(self.old_line_num),
384 Some(self.new_line_num),
385 );
386
387 self.pos_in_op += 1;
388 self.old_line_num += 1;
389 self.new_line_num += 1;
390
391 return Some(display_line);
392 }
393 }
394
395 DiffOp::Delete { old_pos, len, .. } => {
396 if self.pos_in_op < *len {
397 let line_idx = old_pos + self.pos_in_op;
398 let raw = self.diff.old_lines.get(line_idx)?.content();
399
400 let display_line = DisplayLine::new(
401 LineStatus::Removed,
402 raw,
403 Some(self.old_line_num),
404 None,
405 );
406
407 self.pos_in_op += 1;
408 self.old_line_num += 1;
409
410 return Some(display_line);
411 }
412 }
413
414 DiffOp::Insert { new_pos, len, .. } => {
415 if self.pos_in_op < *len {
416 let line_idx = new_pos + self.pos_in_op;
417 let raw = self.diff.new_lines.get(line_idx)?.content();
418
419 let display_line =

Callers

nothing calls this directly

Calls 7

getMethod · 0.65
clearMethod · 0.65
lenMethod · 0.45
opsMethod · 0.45
contentMethod · 0.45
is_emptyMethod · 0.45
pushMethod · 0.45

Tested by

no test coverage detected