Make WordPress Core

Changeset 33955


Ignore:
Timestamp:
09/08/2015 10:54:08 PM (9 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.