Преглед изворни кода

Refactor table properties conversion helpers.

Maciej Gołaszewski пре 6 година
родитељ
комит
33c3e35a37

+ 34 - 6
packages/ckeditor5-table/src/tableproperties/utils.js → packages/ckeditor5-table/src/converters/tableproperties.js

@@ -4,10 +4,18 @@
  */
 
 /**
- * @module table/tableproperites/utils
+ * @module table/converters/tableproperites
  */
 
-export function upcastAttribute( conversion, modelElement, modelAttribute, styleName ) {
+/**
+ * Conversion helper for upcasting attribute using normalized styles.
+ *
+ * @param {module:engine/conversion/conversion~Conversion} conversion
+ * @param {String} modelElement
+ * @param {String} modelAttribute
+ * @param {String} styleName
+ */
+export function upcastStyleToAttribute( conversion, modelElement, modelAttribute, styleName ) {
 	conversion.for( 'upcast' ).attributeToAttribute( {
 		view: {
 			styles: {
@@ -22,8 +30,14 @@ export function upcastAttribute( conversion, modelElement, modelAttribute, style
 	} );
 }
 
-export function upcastBorderStyles( conversion, viewElement ) {
-	conversion.for( 'upcast' ).add( dispatcher => dispatcher.on( 'element:' + viewElement, ( evt, data, conversionApi ) => {
+/**
+ * Conversion helper for upcasting border styles for view element.
+ *
+ * @param {module:engine/conversion/conversion~Conversion} conversion
+ * @param {String} viewElementName
+ */
+export function upcastBorderStyles( conversion, viewElementName ) {
+	conversion.for( 'upcast' ).add( dispatcher => dispatcher.on( 'element:' + viewElementName, ( evt, data, conversionApi ) => {
 		// TODO: this is counter-intuitive: ie.: if only `border-top` is defined then `hasStyle( 'border' )` also returns true.
 		// TODO: this might needs to be fixed in styles normalizer.
 		const stylesToConsume = [
@@ -56,7 +70,15 @@ export function upcastBorderStyles( conversion, viewElement ) {
 	} ) );
 }
 
-export function downcastToStyle( conversion, modelElement, modelAttribute, styleName ) {
+/**
+ * Conversion helper for downcasting attribute to a style.
+ *
+ * @param {module:engine/conversion/conversion~Conversion} conversion
+ * @param {String} modelElement
+ * @param {String} modelAttribute
+ * @param {String} styleName
+ */
+export function downcastAttributeToStyle( conversion, modelElement, modelAttribute, styleName ) {
 	conversion.for( 'downcast' ).attributeToAttribute( {
 		model: {
 			name: modelElement,
@@ -71,7 +93,13 @@ export function downcastToStyle( conversion, modelElement, modelAttribute, style
 	} );
 }
 
-// Properly downcast table border attribute on <table> and not on <figure>.
+/**
+ * Conversion helper for downcasting attributes from model's table to a view table (not to figure).
+ *
+ * @param {module:engine/conversion/conversion~Conversion} conversion
+ * @param {String} modelAttribute
+ * @param {String} styleName
+ */
 export function downcastTableAttribute( conversion, modelAttribute, styleName ) {
 	conversion.for( 'downcast' ).add( dispatcher => dispatcher.on( `attribute:${ modelAttribute }:table`, ( evt, data, conversionApi ) => {
 		const { item, attributeNewValue } = data;

+ 6 - 6
packages/ckeditor5-table/src/tablecellpropertiesediting.js

@@ -8,7 +8,7 @@
  */
 
 import Plugin from '@ckeditor/ckeditor5-core/src/plugin';
-import { downcastToStyle, upcastAttribute, upcastBorderStyles } from './tableproperties/utils';
+import { downcastAttributeToStyle, upcastStyleToAttribute, upcastBorderStyles } from './converters/tableproperties';
 import { addBorderRules } from '@ckeditor/ckeditor5-engine/src/view/styles/border';
 import { addPaddingRules } from '@ckeditor/ckeditor5-engine/src/view/styles/padding';
 import { addBackgroundRules } from '@ckeditor/ckeditor5-engine/src/view/styles/background';
@@ -75,9 +75,9 @@ function enableBorderProperties( schema, conversion ) {
 	} );
 	upcastBorderStyles( conversion, 'td' );
 	upcastBorderStyles( conversion, 'th' );
-	downcastToStyle( conversion, 'tableCell', 'borderStyle', 'border-style' );
-	downcastToStyle( conversion, 'tableCell', 'borderColor', 'border-color' );
-	downcastToStyle( conversion, 'tableCell', 'borderWidth', 'border-width' );
+	downcastAttributeToStyle( conversion, 'tableCell', 'borderStyle', 'border-style' );
+	downcastAttributeToStyle( conversion, 'tableCell', 'borderColor', 'border-color' );
+	downcastAttributeToStyle( conversion, 'tableCell', 'borderWidth', 'border-width' );
 }
 
 // Enables `'horizontalAlignment'` attribute for table cells.
@@ -135,6 +135,6 @@ function enableProperty( schema, conversion, modelAttribute, styleName ) {
 	schema.extend( 'tableCell', {
 		allowAttributes: [ modelAttribute ]
 	} );
-	upcastAttribute( conversion, 'tableCell', modelAttribute, styleName );
-	downcastToStyle( conversion, 'tableCell', modelAttribute, styleName );
+	upcastStyleToAttribute( conversion, 'tableCell', modelAttribute, styleName );
+	downcastAttributeToStyle( conversion, 'tableCell', modelAttribute, styleName );
 }

+ 2 - 2
packages/ckeditor5-table/src/tablepropertiesediting.js

@@ -11,7 +11,7 @@ import Plugin from '@ckeditor/ckeditor5-core/src/plugin';
 import { addBorderRules } from '@ckeditor/ckeditor5-engine/src/view/styles/border';
 import { addBackgroundRules } from '@ckeditor/ckeditor5-engine/src/view/styles/background';
 
-import { downcastTableAttribute, upcastAttribute, upcastBorderStyles } from './tableproperties/utils';
+import { downcastTableAttribute, upcastStyleToAttribute, upcastBorderStyles } from './converters/tableproperties';
 import TableEditing from './tableediting';
 
 /**
@@ -154,6 +154,6 @@ function enableProperty( schema, conversion, modelAttribute, styleName ) {
 	schema.extend( 'table', {
 		allowAttributes: [ modelAttribute ]
 	} );
-	upcastAttribute( conversion, 'table', modelAttribute, styleName );
+	upcastStyleToAttribute( conversion, 'table', modelAttribute, styleName );
 	downcastTableAttribute( conversion, modelAttribute, styleName );
 }