Make WordPress Core

Ticket #27907: 27907.4.diff

File 27907.4.diff, 3.1 KB (added by gcorne, 12 years ago)
  • src/wp-includes/js/shortcode.js

    diff --git src/wp-includes/js/shortcode.js src/wp-includes/js/shortcode.js
    index 677c99a..2d31921 100644
    window.wp = window.wp || {}; 
    3737                        // If we matched a leading `[`, strip it from the match
    3838                        // and increment the index accordingly.
    3939                        if ( match[1] ) {
    40                                 result.match = result.match.slice( 1 );
     40                                result.content = result.content.slice( 1 );
    4141                                result.index++;
    4242                        }
    4343
    4444                        // If we matched a trailing `]`, strip it from the match.
    4545                        if ( match[7] ) {
    46                                 result.match = result.match.slice( 0, -1 );
     46                                result.content = result.content.slice( 0, -1 );
    4747                        }
    4848
    4949                        return result;
    window.wp = window.wp || {}; 
    353353                        return text + '</' + options.tag + '>';
    354354                }
    355355        });
    356 }());
    357  No newline at end of file
     356}());
  • tests/qunit/wp-includes/js/shortcode.js

    diff --git tests/qunit/wp-includes/js/shortcode.js tests/qunit/wp-includes/js/shortcode.js
    index 29d72ac..72c8aa9 100644
    jQuery( function() { 
    5757                equal( result, undefined, 'foo shortcode not found when escaped with params' );
    5858        });
    5959
     60        test( 'next() should find shortcodes that are incorrectly escaped by newlines', function() {
     61                var result;
     62
     63                result = wp.shortcode.next( 'foo', 'this has the [\n[foo]] shortcode' );
     64                equal( result.index, 15, 'shortcode found when incorrectly escaping the start of it' );
     65
     66                result = wp.shortcode.next( 'foo', 'this has the [[foo]\n] shortcode' );
     67                equal( result.index, 14, 'shortcode found when incorrectly escaping the end of it' );
     68        });
     69
     70        test( 'next() should still work when there are not equal ammounts of square brackets', function() {
     71                var result;
     72
     73                result = wp.shortcode.next( 'foo', 'this has the [[foo] shortcode' );
     74                equal( result.index, 14, 'shortcode found when there are offset square brackets' );
     75
     76                result = wp.shortcode.next( 'foo', 'this has the [foo]] shortcode' );
     77                equal( result.index, 13, 'shortcode found when there are offset square brackets' );
     78        });
     79
    6080        test( 'next() should find the second instances of the shortcode when the first one is escaped', function() {
    6181                var result;
    6282
    jQuery( function() { 
    123143                equal( result, 'this bar has the [[foo param="bar"]] shortcode escaped', 'escaped foo with params not replaced but unescaped foo replaced' );
    124144        });
    125145
     146        test( 'replace() should replace improperly escaped shortcodes that include newlines', function() {
     147                var result;
     148
     149                result = wp.shortcode.replace( 'foo', 'this [foo] has the [[foo param="bar"]\n] shortcode ', shortcodeReplaceCallback );
     150                equal( result, 'this bar has the [bar\n] shortcode ', 'escaping with newlines should not actually escape the content' );
     151
     152                result = wp.shortcode.replace( 'foo', 'this [foo] has the [\n[foo param="bar"]] shortcode ', shortcodeReplaceCallback );
     153                equal( result, 'this bar has the [\nbar] shortcode ', 'escaping with newlines should not actually escape the content' );
     154        });
     155
    126156        test( 'replace() should not replace the shortcode when it is an incomplete match', function() {
    127157                var result;
    128158