MCPcopy Create free account
hub / github.com/Codeya-IDE/deepin-ide / patch_addContext

Method patch_addContext

3rdparty/diff-match-patch/diff_match_patch.cpp:1582–1621  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1580
1581
1582void diff_match_patch::patch_addContext(Patch &patch, const QString &text) {
1583 if (text.isEmpty()) {
1584 return;
1585 }
1586 QString pattern = safeMid(text, patch.start2, patch.length1);
1587 int padding = 0;
1588
1589 // Look for the first and last matches of pattern in text. If two different
1590 // matches are found, increase the pattern length.
1591 while (text.indexOf(pattern) != text.lastIndexOf(pattern)
1592 && pattern.length() < Match_MaxBits - Patch_Margin - Patch_Margin) {
1593 padding += Patch_Margin;
1594 pattern = safeMid(text, std::max(0, patch.start2 - padding),
1595 std::min(text.length(), patch.start2 + patch.length1 + padding)
1596 - std::max(0, patch.start2 - padding));
1597 }
1598 // Add one chunk for good luck.
1599 padding += Patch_Margin;
1600
1601 // Add the prefix.
1602 QString prefix = safeMid(text, std::max(0, patch.start2 - padding),
1603 patch.start2 - std::max(0, patch.start2 - padding));
1604 if (!prefix.isEmpty()) {
1605 patch.diffs.prepend(Diff(EQUAL, prefix));
1606 }
1607 // Add the suffix.
1608 QString suffix = safeMid(text, patch.start2 + patch.length1,
1609 std::min(text.length(), patch.start2 + patch.length1 + padding)
1610 - (patch.start2 + patch.length1));
1611 if (!suffix.isEmpty()) {
1612 patch.diffs.append(Diff(EQUAL, suffix));
1613 }
1614
1615 // Roll back the start points.
1616 patch.start1 -= prefix.length();
1617 patch.start2 -= prefix.length();
1618 // Extend the lengths.
1619 patch.length1 += prefix.length() + suffix.length();
1620 patch.length2 += prefix.length() + suffix.length();
1621}
1622
1623
1624QList<Patch> diff_match_patch::patch_make(const QString &text1,

Callers

nothing calls this directly

Calls 5

DiffClass · 0.70
isEmptyMethod · 0.45
indexOfMethod · 0.45
lengthMethod · 0.45
appendMethod · 0.45

Tested by

no test coverage detected