Make WordPress Core

Changeset 33955


Ignore:
Timestamp:
09/08/2015 10:54:08 PM (11 years ago)
Author:
azaozz
Message:

Formatting: maintain the content of HTML comments when they contain <object> tags. Add more tests for wpaitop().

Props miqrogroove.
Fixes #33645 for trunk.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/formatting.php

    r33923 r33955  
    497497
    498498        // Add a single line break above block-level opening tags.
    499         $pee = preg_replace('!(<' . $allblocks . '[^>]*>)!', "\n$1", $pee);
     499        $pee = preg_replace('!(<' . $allblocks . '[\s/>])!', "\n$1", $pee);
    500500
    501501        // Add a double line break below block-level closing tags.
     
    597597
    598598        // Restore newlines in all elements.
    599         $pee = str_replace( " <!-- wpnl --> ", "\n", $pee );
     599        if ( false !== strpos( $pee, '<!-- wpnl -->' ) ) {
     600                $pee = str_replace( array( ' <!-- wpnl --> ', '<!-- wpnl -->' ), "\n", $pee );
     601        }
    600602
    601603        return $pee;
  • trunk/tests/phpunit/tests/formatting/Autop.php

    r33624 r33955  
    329329                );
    330330
     331                // Check whitespace normalization.
    331332                $content = array();
    332333
     
    336337
    337338                $expected = join( "\n", $content );
    338                 $content = join( "\n\n", $content ); // WS difference
    339 
    340                 $this->assertEquals( $expected, trim( wpautop( $content ) ) );
     339                $input = join( "\n\n", $content ); // WS difference
     340
     341                $this->assertEquals( $expected, trim( wpautop( $input ) ) );
     342
     343                $input = join( "", $content ); // WS difference
     344
     345                $this->assertEquals( $expected, trim( wpautop( $input ) ) );
     346
     347                // Check whitespace addition.
     348                $content = array();
     349
     350                foreach ( $blocks as $block ) {
     351                        $content[] = "<$block/>";
     352                }
     353
     354                $expected = join( "\n", $content );
     355                $input = join( "", $content );
     356
     357                $this->assertEquals( $expected, trim( wpautop( $input ) ) );
     358
     359                // Check whitespace addition with attributes.
     360                $content = array();
     361
     362                foreach ( $blocks as $block ) {
     363                        $content[] = "<$block attr='value'>foo</$block>";
     364                }
     365
     366                $expected = join( "\n", $content );
     367                $input = join( "", $content );
     368
     369                $this->assertEquals( $expected, trim( wpautop( $input ) ) );
    341370        }
    342371
     
    421450                                "<p>Hello <!-- a\nhref='world' --></p>\n",
    422451                        ),
     452                        array(
     453                                "Hello <!-- <object>\n<param>\n<param>\n<embed>\n</embed>\n</object>\n -->",
     454                                "<p>Hello <!-- <object>\n<param>\n<param>\n<embed>\n</embed>\n</object>\n --></p>\n",
     455                        ),
     456                        array(
     457                                "Hello <!-- <object>\n<param/>\n<param/>\n<embed>\n</embed>\n</object>\n -->",
     458                                "<p>Hello <!-- <object>\n<param/>\n<param/>\n<embed>\n</embed>\n</object>\n --></p>\n",
     459                        ),
    423460/* Block elements inside comments will fail this test in all versions, it's not a regression.
    424461                        array(
Note: See TracChangeset for help on using the changeset viewer.