From 4f9179bbebc7fcd87e3ea4acbee967b4f81c9980 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20Go=C5=82aszewski?= Date: Tue, 18 Sep 2018 12:14:17 +0200 Subject: [PATCH] Fix: The upcast conversion now properly parses inline content in table cell into single paragraph. --- src/converters/upcasttable.js | 11 +++++------ tests/converters/upcasttable.js | 19 +++++++++++++++++++ 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/src/converters/upcasttable.js b/src/converters/upcasttable.js index 9c329471..c8dbaba4 100644 --- a/src/converters/upcasttable.js +++ b/src/converters/upcasttable.js @@ -115,13 +115,12 @@ export function upcastTableCell( elementName ) { conversionApi.writer.insert( tableCell, splitResult.position ); conversionApi.consumable.consume( viewTableCell, { name: true } ); - for ( const child of viewTableCell.getChildren() ) { - const { modelCursor } = conversionApi.convertItem( child, ModelPosition.createAt( tableCell, 'end' ) ); + const modelCursor = ModelPosition.createAt( tableCell ); + conversionApi.convertChildren( viewTableCell, modelCursor ); - // Ensure empty paragraph in table cell. - if ( modelCursor.parent.name == 'tableCell' && !modelCursor.parent.childCount ) { - conversionApi.writer.insertElement( 'paragraph', modelCursor ); - } + // Ensure a paragraph in the model for empty table cells. + if ( !tableCell.childCount ) { + conversionApi.writer.insertElement( 'paragraph', modelCursor ); } // Set conversion result range. diff --git a/tests/converters/upcasttable.js b/tests/converters/upcasttable.js index 9cf0ff45..418a8a85 100644 --- a/tests/converters/upcasttable.js +++ b/tests/converters/upcasttable.js @@ -418,6 +418,25 @@ describe( 'upcastTable()', () => { ] ) ); } ); + it( 'should upcast table inline content to single ', () => { + editor.model.schema.extend( '$text', { allowAttributes: 'bold' } ); + editor.conversion.attributeToElement( { model: 'bold', view: 'strong' } ); + + editor.setData( + '' + + '' + + '' + + '' + + '' + + '' + + '
foo bar
' + ); + + expectModel( modelTable( [ + [ 'foo <$text bold="true">bar' ] + ] ) ); + } ); + it( 'should upcast table with multiple

in table cell', () => { editor.setData( '' +