Changeset 36719
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-includes/js/tinymce/plugins/wptextpattern/plugin.js
r36627 r36719 26 26 { start: '#####', format: 'h5' }, 27 27 { start: '######', format: 'h6' }, 28 { start: '>', format: 'blockquote' } 28 { start: '>', format: 'blockquote' }, 29 { regExp: /^\s*(?:(?:\* ?){3,}|(?:_ ?){3,}|(?:- ?){3,})\s*$/, element: 'hr' } 29 30 ]; 30 31 … … 38 39 39 40 var canUndo; 40 var refNode;41 var refPattern;42 41 var chars = []; 43 var zeroWidthSpaceNode;44 42 45 43 tinymce.each( inlinePatterns, function( pattern ) { … … 52 50 53 51 editor.on( 'selectionchange', function() { 54 var offset;55 56 52 canUndo = null; 57 58 if ( zeroWidthSpaceNode ) {59 offset = zeroWidthSpaceNode.data.indexOf( '\u200b' );60 61 if ( offset !== -1 ) {62 zeroWidthSpaceNode.deleteData( offset, offset + 1 );63 }64 }65 53 } ); 66 54 … … 73 61 74 62 if ( event.keyCode === VK.ENTER && ! VK.modifierPressed( event ) ) { 75 watchEnter();63 enter(); 76 64 } 77 65 }, true ); … … 80 68 if ( event.keyCode === VK.SPACEBAR && ! event.ctrlKey && ! event.metaKey && ! event.altKey ) { 81 69 space(); 82 } else if ( event.keyCode === VK.ENTER && ! VK.modifierPressed( event ) ) {83 enter();84 70 } else if ( event.keyCode > 47 && ! ( event.keyCode >= 91 && event.keyCode <= 93 ) ) { 85 71 inline(); … … 156 142 setTimeout( function() { 157 143 canUndo = 'space'; 158 zeroWidthSpaceNode = zero; 144 145 editor.once( 'selectionchange', function() { 146 var offset; 147 148 if ( zero ) { 149 offset = zero.data.indexOf( '\u200b' ); 150 151 if ( offset !== -1 ) { 152 zero.deleteData( offset, offset + 1 ); 153 } 154 } 155 } ); 159 156 } ); 160 157 } … … 234 231 } 235 232 236 function watchEnter() {233 function enter() { 237 234 var rng = editor.selection.getRng(), 238 235 start = rng.startContainer, … … 248 245 249 246 while ( i-- ) { 250 if ( text.indexOf( enterPatterns[ i ].start ) === 0 ) { 251 pattern = enterPatterns[ i ]; 252 break; 253 } 247 if ( enterPatterns[ i ].start ) { 248 if ( text.indexOf( enterPatterns[ i ].start ) === 0 ) { 249 pattern = enterPatterns[ i ]; 250 break; 251 } 252 } else if ( enterPatterns[ i ].regExp ) { 253 if ( enterPatterns[ i ].regExp.test( text ) ) { 254 pattern = enterPatterns[ i ]; 255 break; 256 } 257 } 254 258 } 255 259 … … 262 266 } 263 267 264 refNode = node; 265 refPattern = pattern; 266 } 267 268 function ltrim( text ) { 269 return text ? text.replace( /^\s+/, '' ) : ''; 270 } 271 272 function enter() { 273 if ( refNode ) { 268 editor.once( 'keyup', function() { 274 269 editor.undoManager.add(); 275 270 276 271 editor.undoManager.transact( function() { 277 editor.formatter.apply( refPattern.format, {}, refNode ); 278 refNode.replaceData( 0, refNode.data.length, ltrim( refNode.data.slice( refPattern.start.length ) ) ); 272 if ( pattern.format ) { 273 editor.formatter.apply( pattern.format, {}, node ); 274 node.replaceData( 0, node.data.length, ltrim( node.data.slice( pattern.start.length ) ) ); 275 } else if ( pattern.element ) { 276 editor.getBody().replaceChild( document.createElement( pattern.element ), node.parentNode ); 277 } 279 278 } ); 280 279 … … 283 282 canUndo = 'enter'; 284 283 } ); 285 } 286 287 refNode = null; 288 refPattern = null; 284 } ); 285 } 286 287 function ltrim( text ) { 288 return text ? text.replace( /^\s+/, '' ) : ''; 289 289 } 290 290 } ); -
trunk/tests/qunit/wp-includes/js/tinymce/plugins/wptextpattern/plugin.js
r36627 r36719 307 307 308 308 QUnit.test( 'Inline: no change.', function( assert ) { 309 type( '******', function() { 310 assert.equal( editor.getContent(), '<p>******</p>' ); 309 type( 'test ******', function() { 310 assert.equal( editor.getContent(), '<p>test ******</p>' ); 311 }, assert.async() ); 312 } ); 313 314 QUnit.test( 'Horizontal Rule', function( assert ) { 315 type( ' --- \n', function() { 316 assert.equal( editor.getContent(), '<hr />\n<p> </p>' ); 311 317 }, assert.async() ); 312 318 } );
Note: See TracChangeset
for help on using the changeset viewer.