WordPress.org

Make WordPress Core

Ticket #29557: miqro-29557.patch

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

     
    2828 * @return string The string replaced with html entities
    2929 */
    3030function wptexturize($text, $reset = false) {
    31         global $wp_cockneyreplace;
     31        global $wp_cockneyreplace, $shortcode_tags;
    3232        static $static_characters, $static_replacements, $dynamic_characters, $dynamic_replacements,
    3333                $default_no_texturize_tags, $default_no_texturize_shortcodes, $run_texturize = true;
    3434
     
    205205
    206206        // Look for shortcodes and HTML elements.
    207207
     208        $tagnames = array_keys( $shortcode_tags );
     209        $tagregexp = join( '|', array_map( 'preg_quote', $tagnames ) );
     210        $tagregexp = "(?:$tagregexp)(?![\\w-])"; // Excerpt of get_shortcode_regex().
     211       
    208212        $regex =  '/('                  // Capture the entire match.
    209213                .       '<'             // Find start of element.
    210214                .       '(?(?=!--)'     // Is this a comment?
     
    215219                . '|'
    216220                .       '\['            // Find start of shortcode.
    217221                .       '\[?'           // Shortcodes may begin with [[
     222                .       $tagregexp      // Only match registered shortcodes, because performance.
    218223                .       '(?:'
    219224                .               '[^\[\]<>]'     // Shortcodes do not contain other shortcodes.
    220225                .       '|'
  • tests/phpunit/tests/formatting/WPTexturize.php

     
    1111
    1212        function test_disable() {
    1313                $this->assertEquals('<pre>---</pre>', wptexturize('<pre>---</pre>'));
    14                 $this->assertEquals('[a]a&#8211;b[code]---[/code]a&#8211;b[/a]', wptexturize('[a]a--b[code]---[/code]a--b[/a]'));
    1514                $this->assertEquals('<pre><code></code>--</pre>', wptexturize('<pre><code></code>--</pre>'));
    1615
    1716                $this->assertEquals( '<code>---</code>',     wptexturize( '<code>---</code>'     ) );
     
    12131212                                '[/...]',
    12141213                        ),
    12151214                        array(
    1216                                 '[...]...[/...]', // These are potentially usable shortcodes.
    1217                                 '[...]&#8230;[/...]',
    1218                         ),
    1219                         array(
    1220                                 '[[...]]...[[/...]]', // Shortcode parsing will ignore the inner ]...[ part and treat this as a single escaped shortcode.
    1221                                 '[[...]]&#8230;[[/...]]',
    1222                         ),
    1223                         array(
    1224                                 '[[[...]]]...[[[/...]]]', // Again, shortcode parsing matches, but only the [[...] and [/...]] parts.
    1225                                 '[[[...]]]&#8230;[[[/...]]]',
    1226                         ),
    1227                         array(
    1228                                 '[[code]...[/code]...', // These are potentially usable shortcodes.  Unfortunately, the meaning of [[code] is ambiguous unless we run the entire shortcode regexp.
    1229                                 '[[code]&#8230;[/code]&#8230;',
    1230                         ),
    1231                         array(
    1232                                 '[code]...[/code]]...', // These are potentially usable shortcodes.  Unfortunately, the meaning of [/code]] is ambiguous unless we run the entire shortcode regexp.
    1233                                 '[code]...[/code]]...', // This test would not pass in 3.9 because the extra brace was always ignored by texturize.
    1234                         ),
    1235                         array(
    12361215                                '[gal>ery ...]',
    12371216                                '[gal>ery &#8230;]',
    12381217                        ),
     
    13441323                                '[ but also catches the <b>styled "[quote]" here</b> ]',
    13451324                                '[ but also catches the <b>styled &#8220;[quote]&#8221; here</b> ]',
    13461325                        ),
    1347                         array(
    1348                                 '[Let\'s get crazy<input>[plugin code="<a href=\'?a[]=100\'>hello</a>"]</input>world]',
    1349                                 '[Let&#8217;s get crazy<input>[plugin code="<a href=\'?a[]=100\'>hello</a>"]</input>world]',
    1350                         ),
    13511326                );
    13521327        }
    13531328
     
    16971672                                '<code>hello</span>---</span>',
    16981673                                '<code>hello</span>---</span>',
    16991674                        ),
     1675                );
     1676        }
     1677
     1678        /**
     1679         * These tests are obsolete and will fail.
     1680         *
     1681         * @ticket 29557
     1682         * @dataProvider data_unregistered_shortcodes
     1683         */
     1684        function test_unregistered_shortcodes( $input, $output ) {
     1685                return $this->assertEquals( $output, wptexturize( $input ) );
     1686        }
     1687
     1688        function data_unregistered_shortcodes() {
     1689                return array(
    17001690                        array(
     1691                                '[a]a--b[code]---[/code]a--b[/a]',
     1692                                '[a]a&#8211;b[code]---[/code]a&#8211;b[/a]',
     1693                        ),
     1694                        array(
     1695                                '[...]...[/...]', // These are potentially usable shortcodes.
     1696                                '[...]&#8230;[/...]',
     1697                        ),
     1698                        array(
     1699                                '[[...]]...[[/...]]', // Shortcode parsing will ignore the inner ]...[ part and treat this as a single escaped shortcode.
     1700                                '[[...]]&#8230;[[/...]]',
     1701                        ),
     1702                        array(
     1703                                '[[[...]]]...[[[/...]]]', // Again, shortcode parsing matches, but only the [[...] and [/...]] parts.
     1704                                '[[[...]]]&#8230;[[[/...]]]',
     1705                        ),
     1706                        array(
     1707                                '[[code]...[/code]...', // These are potentially usable shortcodes.  Unfortunately, the meaning of [[code] is ambiguous unless we run the entire shortcode regexp.
     1708                                '[[code]&#8230;[/code]&#8230;',
     1709                        ),
     1710                        array(
     1711                                '[code]...[/code]]...', // These are potentially usable shortcodes.  Unfortunately, the meaning of [/code]] is ambiguous unless we run the entire shortcode regexp.
     1712                                '[code]...[/code]]...', // This test would not pass in 3.9 because the extra brace was always ignored by texturize.
     1713                        ),
     1714                        array(
     1715                                '[Let\'s get crazy<input>[plugin code="<a href=\'?a[]=100\'>hello</a>"]</input>world]',
     1716                                '[Let&#8217;s get crazy<input>[plugin code="<a href=\'?a[]=100\'>hello</a>"]</input>world]',
     1717                        ),
     1718                        array(
    17011719                                '<span>hello[/code]---</span>',
    17021720                                '<span>hello[/code]&#8212;</span>',
    17031721                        ),