diff --git a/modules/ve-mw/ui/ve.ui.MWExtensionWindow.js b/modules/ve-mw/ui/ve.ui.MWExtensionWindow.js index 0529b2cd40..274638311e 100644 --- a/modules/ve-mw/ui/ve.ui.MWExtensionWindow.js +++ b/modules/ve-mw/ui/ve.ui.MWExtensionWindow.js @@ -37,6 +37,17 @@ OO.initClass( ve.ui.MWExtensionWindow ); */ ve.ui.MWExtensionWindow.static.allowedEmpty = false; +/** + * Tell Parsoid to self-close tags when the body is empty + * + * i.e. `` -> `` + * + * @static + * @property {boolean} + * @inheritable + */ +ve.ui.MWExtensionWindow.static.selfCloseEmptyBody = false; + /** * Inspector's directionality, 'ltr' or 'rtl' * @@ -242,6 +253,10 @@ ve.ui.MWExtensionWindow.prototype.updateMwData = function ( mwData ) { // Prevent that by escaping the first angle bracket '<' to '<'. (bug 57429) value = value.replace( new RegExp( '<(/' + tagName + '\\s*>)', 'gi' ), '<$1' ); - mwData.body = mwData.body || {}; - mwData.body.extsrc = value; + if ( value.trim() === '' && this.constructor.static.selfCloseEmptyBody ) { + mwData.body = null; + } else { + mwData.body = mwData.body || {}; + mwData.body.extsrc = value; + } };