| 635 | } |
| 636 | |
| 637 | static void applySubLineDiff( |
| 638 | std::vector<UIDiffView::DiffLine>& lines, |
| 639 | std::function<void( UIDiffView::DiffLine&, UIDiffView::DiffLine& )> computeSubLineDiff ) { |
| 640 | size_t i = 0; |
| 641 | while ( i < lines.size() ) { |
| 642 | if ( lines[i].type == UIDiffView::DiffLineType::Removed ) { |
| 643 | size_t j = i; |
| 644 | while ( j < lines.size() && lines[j].type == UIDiffView::DiffLineType::Removed ) |
| 645 | j++; |
| 646 | size_t k = j; |
| 647 | while ( k < lines.size() && lines[k].type == UIDiffView::DiffLineType::Added ) |
| 648 | k++; |
| 649 | |
| 650 | size_t numRemoved = j - i; |
| 651 | size_t numAdded = k - j; |
| 652 | size_t numToCompare = std::min( numRemoved, numAdded ); |
| 653 | for ( size_t m = 0; m < numToCompare; m++ ) { |
| 654 | computeSubLineDiff( lines[i + m], lines[j + m] ); |
| 655 | } |
| 656 | i = k; |
| 657 | } else { |
| 658 | i++; |
| 659 | } |
| 660 | } |
| 661 | } |
| 662 | |
| 663 | void UIDiffView::loadFromPatch( const std::string& patchText, |
| 664 | const std::string& originalFilePath ) { |
no test coverage detected