MDL-35206 Fix the links list enumeration in the html2text library
authorDavid Mudrák <david@moodle.com>
Fri, 28 Jun 2013 11:10:10 +0000 (13:10 +0200)
committerDavid Mudrák <david@moodle.com>
Fri, 28 Jun 2013 11:10:10 +0000 (13:10 +0200)
lib/html2text.php
lib/html2text_readme.txt
lib/tests/html2text_test.php

index afedac5..b78b0ae 100644 (file)
@@ -584,7 +584,7 @@ class html2text
             $index = count($this->_link_list);
         }
 
-        return $display . ' [' . ($index+1) . ']';
+        return $display . ' [' . ($index) . ']';
     }
 
     /**
index 75ddfbe..c92fe84 100644 (file)
@@ -12,6 +12,7 @@ Modifications
 3. Use textlib, not crappy functions that break UTF-8, in the _strtoupper method. (Tim Hunt 2010-11-02)
 4. Make sure html2text does not destroy '0'. (Tim Hunt 2011-09-21)
 5. define missing mail charset
+6. Fixed the links list enumeration (MDL-35206).
 
 
 Imported from: https://github.com/moodle/custom-html2text/tree/MOODLE_5886_1
index c4f54ff..2791dd0 100644 (file)
@@ -73,6 +73,31 @@ class html2text_testcase extends basic_testcase {
         $this->assertSame('0', html_to_text('0'));
     }
 
+    /**
+     * Test the links list enumeration.
+     */
+    public function test_build_link_list() {
+
+        // Note the trailing whitespace left intentionally in the text.
+        $text = 'Total of <a title="List of integrated issues"
+            href="http://tr.mdl.org/sh.jspa?r=1&j=p+%3D+%22I+d%22+%3D">     
+            <strong>27 issues</strong></a> and <a href="http://another.url/?f=a&amp;b=2">some</a> other
+have been fixed <strong><a href="http://third.url/view.php">last week</a></strong>';
+
+        // Do not collect links.
+        $result = html_to_text($text, 5000, false);
+        $this->assertSame('Total of 27 ISSUES and some other have been fixed LAST WEEK', $result);
+
+        // Collect and enumerate links.
+        $result = html_to_text($text, 5000, true);
+        $this->assertSame(0, strpos($result, 'Total of 27 ISSUES [1] and some [2] other have been fixed LAST WEEK [3]'));
+        $this->assertSame(false, strpos($result, '[0]'));
+        $this->assertSame(1, preg_match('|^'.preg_quote('[1] http://tr.mdl.org/sh.jspa?r=1&j=p+%3D+%22I+d%22+%3D').'$|m', $result));
+        $this->assertSame(1, preg_match('|^'.preg_quote('[2] http://another.url/?f=a&amp;b=2').'$|m', $result));
+        $this->assertSame(1, preg_match('|^'.preg_quote('[3] http://third.url/view.php').'$|m', $result));
+        $this->assertSame(false, strpos($result, '[4]'));
+    }
+
     // ======= Standard html2text conversion features =======
 
     /**