WordPress.org

Make WordPress Core

Ticket #37693: 37693.5.patch

File 37693.5.patch, 2.0 KB (added by iseulde, 4 years ago)
  • src/wp-includes/js/tinymce/plugins/wptextpattern/plugin.js

     
    108108                        var string = node.data.slice( 0, offset );
    109109
    110110                        tinymce.each( inlinePatterns, function( p ) {
    111                                 var regExp = new RegExp( escapeRegExp( p.start ) + '\\S+' + escapeRegExp( p.end ) + '$' );
     111                                var regExp = new RegExp( escapeRegExp( p.start ) + '[^' + escapeRegExp( p.end.slice( 0, 1 ) ) + ']+?' + escapeRegExp( p.end ) + '$' );
    112112                                var match = string.match( regExp );
    113113
    114114                                if ( ! match ) {
    115115                                        return;
    116116                                }
    117117
    118                                 // Don't allow pattern characters in the text.
    119                                 if ( node.data.slice( match.index + p.start.length, offset - p.end.length ).indexOf( p.start.slice( 0, 1 ) ) !== -1 ) {
     118                                if ( match.index && ! /\s/.test( node.data.charAt( match.index - 1 ) ) ) {
    120119                                        return;
    121120                                }
    122121
  • tests/qunit/wp-includes/js/tinymce/plugins/wptextpattern/plugin.js

     
    319319                }, assert.async() );
    320320        } );
    321321
     322        QUnit.test( 'Inline: allow spaces', function( assert ) {
     323                type( '`a a`', function() {
     324                        assert.equal( editor.getContent(), '<p><code>a a</code></p>' );
     325                        assert.equal( editor.selection.getRng().startOffset, 1 );
     326                }, assert.async() );
     327        } );
     328
     329        QUnit.test( 'Inline: previous character should not be non space', function( assert ) {
     330                type( 'a`a`', function() {
     331                        assert.equal( editor.getContent(), '<p>a`a`</p>' );
     332                        assert.equal( editor.selection.getRng().startOffset, 4 );
     333                }, assert.async() );
     334        } );
     335
    322336        QUnit.test( 'Inline: after typing.', function( assert ) {
    323337                editor.setContent( '<p>test test test</p>' );
    324338                editor.selection.setCursorLocation( editor.$( 'p' )[0].firstChild, 5 );