Verified Commit 000c5058 authored by godotislate's avatar godotislate
Browse files

fix: #2835615 TextTrimmedFormatter not trimming at periods followed by non-breaking space

By: smustgrave
By: chx
By: ezheidtmann
By: longwave
By: wim leers
By: dcam
By: quietone
By: godotislate
(cherry picked from commit bffaae17)
parent f0b8514e
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -106,7 +106,7 @@ public function generate(string|\Stringable $text, string|null $format = NULL, i
    $break_points[] = $line_breaks;

    // If the first paragraph is too long, split at the end of a sentence.
    $break_points[] = ['. ' => 1, '! ' => 1, '? ' => 1, '。' => 0, '؟ ' => 1];
    $break_points[] = ['. ' => 6, '. ' => 1, '! ' => 1, '? ' => 1, '。' => 0, '؟ ' => 1];

    // Iterate over the groups of break points until a break point is found.
    foreach ($break_points as $points) {
+21 −4
Original line number Diff line number Diff line
@@ -61,9 +61,9 @@ public function testFirstSentenceQuestion(): void {
   * Tests summary with long example.
   */
  public function testLongSentence(): void {
    // 125.
    // Setup test strings and expectations.
    // cSpell:disable
    $text =
    $long_sentence_text =
      'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. ' .
      // 108.
      'Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. ' .
@@ -71,13 +71,30 @@ public function testLongSentence(): void {
      'Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. ' .
      // 110.
      'Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.';
    $expected = 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. ' .
    $long_sentence_expected = 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. ' .
                'Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. ' .
                'Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.';

    $long_paragraph_text =
      'Dr. Cras ultricies ligula sed magna dictum porta. Curabitur non nulla sit amet nisl tempus convallis quis ac lectus. Pellentesque in ipsum ' .
      'id orci porta dapibus. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Nulla porttitor. Cras ultricies ligula sed magna ' .
      'dictum porta. Nulla quis lorem ut libero malesuada feugiat. Proin eget tortor risus. Curabitur non nulla sit amet nisl tempus convallis quis ac ' .
      'lectus. Proin eget tortor risus. Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Vivamus suscipit tortor eget felis ' .
      'porttitor volutpat. Quisque velit nisi, pretium ut lacinia in, elementum id enim. Curabitur arcu erat, accumsan id imperdiet et, porttitor at sem. ' .
      'Quisque velit nisi, pretium ut lacinia in, elementum id enim. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; ' .
      'Donec velit neque, auctor sit amet aliquam vel, ullamcorper sit amet ligula. Curabitur aliquet quam id dui posuere blandit. Curabitur aliquet quam id ' .
      'dui posuere blandit. Curabitur non nulla sit amet nisl tempus convallis quis ac lectus. Pellentesque in ipsum id orci porta dapibus';

    $long_paragraph_expected = 'Dr. Cras ultricies ligula sed magna dictum porta. Curabitur non nulla sit amet nisl tempus convallis quis ac lectus. Pellentesque in ipsum ' .
      'id orci porta dapibus. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Nulla porttitor.';
    // cSpell:enable

    // First three sentences add up to: 336, so add one for space and then 3 to
    // get half-way into next word.
    $this->assertTextSummary($text, $expected, NULL, 340);
    $this->assertTextSummary($long_sentence_text, $long_sentence_expected, NULL, 340);

    // Confirm long paragraph breaks correctly.
    $this->assertTextSummary($long_paragraph_text, $long_paragraph_expected, NULL, 300);
  }

  /**