LCOV - code coverage report
Current view: top level - src/lib - Formatter.cpp (source / functions) Hit Total Coverage
Test: mediawiki/php/wikidiff2 test coverage report Lines: 32 69 46.4 %
Date: 2023-07-04 10:20:16 Functions: 5 7 71.4 %

          Line data    Source code
       1             : #include "Formatter.h"
       2             : 
       3             : namespace wikidiff2 {
       4             : 
       5          36 : void Formatter::printFileHeader() {
       6          36 : }
       7             : 
       8          36 : void Formatter::printFileFooter() {
       9          36 : }
      10             : 
      11           0 : void Formatter::debugPrintWordDiff(const WordDiff & worddiff)
      12             : {
      13           0 :     for (unsigned i = 0; i < worddiff.size(); ++i) {
      14           0 :         const DiffOp<Word> & op = worddiff[i];
      15           0 :         switch (op.op) {
      16           0 :             case DiffOp<Word>::copy:
      17           0 :                 result << "Copy\n";
      18           0 :                 break;
      19           0 :             case DiffOp<Word>::del:
      20           0 :                 result << "Delete\n";
      21           0 :                 break;
      22           0 :             case DiffOp<Word>::add:
      23           0 :                 result << "Add\n";
      24           0 :                 break;
      25           0 :             case DiffOp<Word>::change:
      26           0 :                 result << "Change\n";
      27           0 :                 break;
      28             :         }
      29           0 :         result << "From: ";
      30           0 :         bool first = true;
      31           0 :         for (int j=0; j<op.from.size(); j++) {
      32           0 :             if (first) {
      33           0 :                 first = false;
      34             :             } else {
      35           0 :                 result << ", ";
      36             :             }
      37           0 :             result << "(";
      38           0 :             result << *op.from[j] << ")";
      39             :         }
      40           0 :         result << "\n";
      41           0 :         result << "To: ";
      42           0 :         first = true;
      43           0 :         for (int j=0; j<op.to.size(); j++) {
      44           0 :             if (first) {
      45           0 :                 first = false;
      46             :             } else {
      47           0 :                 result << ", ";
      48             :             }
      49           0 :             result << "(";
      50           0 :             result << *op.to[j] << ")";
      51             :         }
      52           0 :         result << "\n\n";
      53             :     }
      54           0 : }
      55             : 
      56       44512 : void Formatter::printHtmlEncodedText(StringIterator inputStart, StringIterator inputEnd)
      57             : {
      58       44512 :     StringIterator p = inputStart;
      59       44512 :     char *needleStart = "<>&", *needleEnd = needleStart + 3;
      60             : 
      61             :     while (true) {
      62       44607 :         StringIterator next = std::find_first_of(p, inputEnd, needleStart, needleEnd);
      63       44607 :         if (next > p) {
      64       44448 :             result.write(&*p, next - p);
      65             :         }
      66       44607 :         if (next == inputEnd) {
      67       44512 :             break;
      68             :         }
      69          95 :         switch (*next) {
      70          45 :             case '<':
      71          45 :                 result << "&lt;";
      72          45 :                 break;
      73          45 :             case '>':
      74          45 :                 result << "&gt;";
      75          45 :                 break;
      76           5 :             default /*case '&'*/:
      77           5 :                 result << "&amp;";
      78             :         }
      79          95 :         p = next + 1;
      80          95 :     }
      81       44512 : }
      82             : 
      83         215 : Formatter::String Formatter::toString(long input) const
      84             : {
      85         430 :     StringStream stream;
      86         215 :     stream << input;
      87         430 :     return String(stream.str());
      88             : }
      89             : 
      90           0 : void Formatter::printConcatDiff(
      91             :     const WordDiff & wordDiff,
      92             :     int leftLine, int rightLine,
      93             :     int offsetFrom, int offsetTo)
      94             : {
      95           0 :     throw std::runtime_error("this formatter does not implement line splitting");
      96             : }
      97             : 
      98         243 : bool Formatter::isNewlineMarker(const DiffOp<Word> & op)
      99             : {
     100         243 :     return op.op == DiffOp<Word>::add
     101          32 :         && op.to.size() == 1
     102         275 :         && op.to[0]->isNewline();
     103             : }
     104             : 
     105             : } // namespace wikidiff2

Generated by: LCOV version 1.13