Ticket #27907: 27907.2.diff
| File 27907.2.diff, 3.6 KB (added by , 12 years ago) |
|---|
-
src/wp-includes/js/shortcode.js
34 34 shortcode: wp.shortcode.fromMatch( match ) 35 35 }; 36 36 37 // If we matched a leading `[`, strip it from the match38 // and increment the index accordingly.39 if ( match[1] ) {37 // If we matched a leading `[`, and it has a matching counterpart, 38 // strip it from the match and increment the index accordingly. 39 if ( match[1] && typeof result.match !== 'undefined' ) { 40 40 result.match = result.match.slice( 1 ); 41 41 result.index++; 42 42 } 43 43 44 // If we matched a trailing `]`, strip it from the match. 45 if ( match[7] ) { 44 // If we matched a trailing `]`, , and it has a matching counterpart, 45 // strip it from the match. 46 if ( match[7] && typeof result.match !== 'undefined' ) { 46 47 result.match = result.match.slice( 0, -1 ); 47 48 } 48 49 … … 353 354 return text + '</' + options.tag + '>'; 354 355 } 355 356 }); 356 }()); 357 No newline at end of file 357 }()); -
tests/qunit/wp-includes/js/shortcode.js
57 57 equal( result, undefined, 'foo shortcode not found when escaped with params' ); 58 58 }); 59 59 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, 13, 'shortcode found when incorrectly escaping the end of it' ); 68 69 }); 70 71 test( 'next() should still work when there are not equal ammounts of square brackets', function() { 72 var result; 73 74 result = wp.shortcode.next( 'foo', 'this has the [[foo] shortcode' ); 75 equal( result.index, 13, 'shortcode found when there are offset square brackets' ); 76 77 result = wp.shortcode.next( 'foo', 'this has the [foo]] shortcode' ); 78 equal( result.index, 13, 'shortcode found when there are offset square brackets' ); 79 }); 80 60 81 test( 'next() should find the second instances of the shortcode when the first one is escaped', function() { 61 82 var result; 62 83 63 64 84 result = wp.shortcode.next( 'foo', 'this has the [[foo]] shortcode [foo] twice' ); 65 85 equal( result.index, 31, 'foo shortcode found the non-escaped foo at index 31' ); 66 86 }); … … 121 141 122 142 result = wp.shortcode.replace( 'foo', 'this [foo] has the [[foo param="bar"]] shortcode escaped', shortcodeReplaceCallback ); 123 143 equal( result, 'this bar has the [[foo param="bar"]] shortcode escaped', 'escaped foo with params not replaced but unescaped foo replaced' ); 144 124 145 }); 125 146 147 test( 'replace() should replace improperly escaped shortcodes that include newlines', function() { 148 var result; 149 150 result = wp.shortcode.replace( 'foo', 'this [foo] has the [[foo param="bar"]\n] shortcode ', shortcodeReplaceCallback ); 151 equal( result, 'this bar has the [bar\n] shortcode ', 'escaping with newlines should not actually escape the content' ); 152 153 154 result = wp.shortcode.replace( 'foo', 'this [foo] has the [\n[foo param="bar"]] shortcode ', shortcodeReplaceCallback ); 155 equal( result, 'this bar has the [\nbar] shortcode ', 'escaping with newlines should not actually escape the content' ); 156 }); 157 126 158 test( 'replace() should not replace the shortcode when it is an incomplete match', function() { 127 159 var result; 128 160