WordPress.org

Make WordPress Core

Ticket #31886: miqro-31886.patch

File miqro-31886.patch, 5.1 KB (added by miqrogroove, 7 years ago)
  • src/wp-includes/formatting.php

     
    108108
    109109                // '99' and '99" are ambiguous among other patterns; assume it's an abbreviated year at the end of a quotation.
    110110                if ( "'" !== $apos || "'" !== $closing_single_quote ) {
    111                         $dynamic[ '/\'(\d\d)\'(?=\Z|[.,)}\-\]]|>|' . $spaces . ')/' ] = $apos . '$1' . $closing_single_quote;
     111                        $dynamic[ '/\'(\d\d)\'(?=\Z|[.,:;!?)}\-\]]|>|' . $spaces . ')/' ] = $apos . '$1' . $closing_single_quote;
    112112                }
    113113                if ( "'" !== $apos || '"' !== $closing_quote ) {
    114                         $dynamic[ '/\'(\d\d)"(?=\Z|[.,)}\-\]]|>|' . $spaces . ')/' ] = $apos . '$1' . $closing_quote;
     114                        $dynamic[ '/\'(\d\d)"(?=\Z|[.,:;!?)}\-\]]|>|' . $spaces . ')/' ] = $apos . '$1' . $closing_quote;
    115115                }
    116116
    117117                // '99 '99s '99's (apostrophe)  But never '9 or '99% or '999 or '99.0.
     
    131131
    132132                // Apostrophe in a word.  No spaces, double apostrophes, or other punctuation.
    133133                if ( "'" !== $apos ) {
    134                         $dynamic[ '/(?<!' . $spaces . ')\'(?!\Z|[.,:;"\'(){}[\]\-]|&[lg]t;|' . $spaces . ')/' ] = $apos;
     134                        $dynamic[ '/(?<!' . $spaces . ')\'(?!\Z|[.,:;!?"\'(){}[\]\-]|&[lg]t;|' . $spaces . ')/' ] = $apos;
    135135                }
    136136
    137137                // 9' (prime)
     
    141141
    142142                // Single quotes followed by spaces or ending punctuation.
    143143                if ( "'" !== $closing_single_quote ) {
    144                         $dynamic[ '/\'(?=\Z|[.,)}\-\]]|&gt;|' . $spaces . ')/' ] = $closing_single_quote;
     144                        $dynamic[ '/\'(?=\Z|[.,:;!?)}\-\]]|&gt;|' . $spaces . ')/' ] = $closing_single_quote;
    145145                }
    146146
    147147                $dynamic_characters['apos'] = array_keys( $dynamic );
  • tests/phpunit/tests/formatting/WPTexturize.php

     
    112112                $this->assertEquals('Class of &#8217;99', wptexturize("Class of '99"));
    113113                $this->assertEquals('Class of &#8217;99&#8217;s', wptexturize("Class of '99's"));
    114114                $this->assertEquals('&#8216;Class of &#8217;99&#8217;', wptexturize("'Class of '99'"));
     115                $this->assertEquals('&#8216;Class of &#8217;99&#8217; ', wptexturize("'Class of '99' "));
     116                $this->assertEquals('&#8216;Class of &#8217;99&#8217;.', wptexturize("'Class of '99'."));
     117                $this->assertEquals('&#8216;Class of &#8217;99&#8217;, she said', wptexturize("'Class of '99', she said"));
     118                $this->assertEquals('&#8216;Class of &#8217;99&#8217;:', wptexturize("'Class of '99':"));
     119                $this->assertEquals('&#8216;Class of &#8217;99&#8217;;', wptexturize("'Class of '99';"));
     120                $this->assertEquals('&#8216;Class of &#8217;99&#8217;!', wptexturize("'Class of '99'!"));
     121                $this->assertEquals('&#8216;Class of &#8217;99&#8217;?', wptexturize("'Class of '99'?"));
    115122                $this->assertEquals('&#8216;Class of &#8217;99&#8217;s&#8217;', wptexturize("'Class of '99's'"));
    116123                $this->assertEquals('&#8216;Class of &#8217;99&#8217;s&#8217;', wptexturize("'Class of '99&#8217;s'"));
    117124                //$this->assertEquals('&#8220;Class of 99&#8221;', wptexturize("\"Class of 99\""));
     
    118125                $this->assertEquals('&#8220;Class of &#8217;99&#8221;', wptexturize("\"Class of '99\""));
    119126                $this->assertEquals('{&#8220;Class of &#8217;99&#8221;}', wptexturize("{\"Class of '99\"}"));
    120127                $this->assertEquals(' &#8220;Class of &#8217;99&#8221; ', wptexturize(" \"Class of '99\" "));
     128                $this->assertEquals(' &#8220;Class of &#8217;99&#8221;.', wptexturize(" \"Class of '99\"."));
     129                $this->assertEquals(' &#8220;Class of &#8217;99&#8221;, she said', wptexturize(" \"Class of '99\", she said"));
     130                $this->assertEquals(' &#8220;Class of &#8217;99&#8221;:', wptexturize(" \"Class of '99\":"));
     131                $this->assertEquals(' &#8220;Class of &#8217;99&#8221;;', wptexturize(" \"Class of '99\";"));
     132                $this->assertEquals(' &#8220;Class of &#8217;99&#8221;!', wptexturize(" \"Class of '99\"!"));
     133                $this->assertEquals(' &#8220;Class of &#8217;99&#8221;?', wptexturize(" \"Class of '99\"?"));
    121134                $this->assertEquals('}&#8221;Class of &#8217;99&#8243;{', wptexturize("}\"Class of '99\"{")); // Not a quotation, may be between two other quotations.
    122135        }
    123136
     
    702715                                'test sentence&#8221;.',
    703716                        ),
    704717                        array(
     718                                'test sentence",',
     719                                'test sentence&#8221;,',
     720                        ),
     721                        array(
     722                                'test sentence":',
     723                                'test sentence&#8221;:',
     724                        ),
     725                        array(
     726                                'test sentence";',
     727                                'test sentence&#8221;;',
     728                        ),
     729                        array(
     730                                'test sentence"!',
     731                                'test sentence&#8221;!',
     732                        ),
     733                        array(
     734                                'test sentence"?',
     735                                'test sentence&#8221;?',
     736                        ),
     737                        array(
    705738                                'test sentence."',
    706739                                'test sentence.&#8221;',
    707740                        ),
     
    747780                                "word word&#8217;, she said",
    748781                        ),
    749782                        array(
     783                                "word word': word",
     784                                "word word&#8217;: word",
     785                        ),
     786                        array(
     787                                "word word'; word",
     788                                "word word&#8217;; word",
     789                        ),
     790                        array(
     791                                "word word'! word",
     792                                "word word&#8217;! word",
     793                        ),
     794                        array(
     795                                "word word'? word",
     796                                "word word&#8217;? word",
     797                        ),
     798                        array(
    750799                                "word word'- word",
    751800                                "word word&#8217;- word",
    752801                        ),