- function doEnter( editor, mode, times, forceMode )\r
- {\r
- while ( times-- )\r
- {\r
- CKEDITOR.plugins.enterkey[ mode == CKEDITOR.ENTER_BR ? 'enterBr' : 'enterBlock' ]\r
- ( editor, mode, null, forceMode );\r
- }\r
- }\r
-\r
- CKEDITOR.editor.prototype.insertText = function( text )\r
- {\r
- this.focus();\r
- this.fire( 'saveSnapshot' );\r
-\r
- var mode = this.getSelection().getStartElement().hasAscendant( 'pre', true ) ? CKEDITOR.ENTER_BR : this.config.enterMode,\r
- isEnterBrMode = mode == CKEDITOR.ENTER_BR,\r
- doc = this.document.$,\r
- self = this,\r
- line;\r
-\r
- text = CKEDITOR.tools.htmlEncode( text.replace( /\r\n|\r/g, '\n' ) );\r
-\r
- var startIndex = 0;\r
- text.replace( /\n+/g, function( match, lastIndex )\r
- {\r
- line = text.substring( startIndex, lastIndex );\r
- startIndex = lastIndex + match.length;\r
- line.length && doInsertText( doc, line );\r
-\r
- var lineBreakNums = match.length,\r
- // Duo consequence line-break as a enter block.\r
- enterBlockTimes = isEnterBrMode ? 0 : Math.floor( lineBreakNums / 2 ),\r
- // Per link-break as a enter br.\r
- enterBrTimes = isEnterBrMode ? lineBreakNums : lineBreakNums % 2;\r
-\r
- // Line-breaks are converted to editor enter key strokes.\r
- doEnter( self, mode, enterBlockTimes );\r
- doEnter( self, CKEDITOR.ENTER_BR, enterBrTimes, isEnterBrMode ? false : true );\r
- });\r
-\r
- // Insert the last text line of text.\r
- line = text.substring( startIndex, text.length );\r
- line.length && doInsertText( doc, line );\r
-\r
- this.fire( 'saveSnapshot' );\r
- };\r