Sfoglia il codice sorgente

Simplify StylesConverter.getReducedForm() usage.

Maciej Gołaszewski 6 anni fa
parent
commit
747c7df707

+ 17 - 32
packages/ckeditor5-engine/src/view/stylesmap.js

@@ -111,23 +111,12 @@ export default class StylesMap {
 			return false;
 		}
 
-		const normalized = this._styleProcessor.getNormalized( name, this._styles );
+		const styles = this._styleProcessor.getReducedForm( name, this._styles );
 
-		if ( !normalized ) {
-			// Try return styles set directly - values that are not parsed.
-			return this._styles[ name ] !== undefined;
-		}
-
-		if ( isObject( normalized ) ) {
-			const styles = this._styleProcessor.getReducedForm( name, normalized );
-
-			const propertyDescriptor = styles.find( ( [ property ] ) => property === name );
+		const propertyDescriptor = styles.find( ( [ property ] ) => property === name );
 
-			// Only return a value if it is set;
-			return Array.isArray( propertyDescriptor );
-		} else {
-			return true;
-		}
+		// Only return a value if it is set;
+		return Array.isArray( propertyDescriptor );
 	}
 
 	/**
@@ -289,24 +278,20 @@ export default class StylesMap {
 			return '';
 		}
 
-		const normalized = this._styleProcessor.getNormalized( propertyName, this._styles );
-
-		if ( !normalized ) {
+		if ( this._styles[ propertyName ] && !isObject( this._styles[ propertyName ] ) ) {
 			// Try return styles set directly - values that are not parsed.
 			return this._styles[ propertyName ];
 		}
 
-		if ( isObject( normalized ) ) {
-			const styles = this._styleProcessor.getReducedForm( propertyName, normalized );
+		const styles = this._styleProcessor.getReducedForm( propertyName, this._styles );
 
-			const propertyDescriptor = styles.find( ( [ property ] ) => property === propertyName );
+		const propertyDescriptor = styles.find( ( [ property ] ) => property === propertyName );
 
-			// Only return a value if it is set;
-			if ( Array.isArray( propertyDescriptor ) ) {
-				return propertyDescriptor[ 1 ];
-			}
+		// Only return a value if it is set;
+		if ( Array.isArray( propertyDescriptor ) ) {
+			return propertyDescriptor[ 1 ];
 		} else {
-			return normalized;
+			return '';
 		}
 	}
 
@@ -344,9 +329,7 @@ export default class StylesMap {
 		const keys = Object.keys( this._styles );
 
 		for ( const key of keys ) {
-			const normalized = this._styleProcessor.getNormalized( key, this._styles );
-
-			parsed.push( ...this._styleProcessor.getReducedForm( key, normalized ) );
+			parsed.push( ...this._styleProcessor.getReducedForm( key, this._styles ) );
 		}
 
 		return parsed;
@@ -476,10 +459,12 @@ export class StylesProcessor {
 	 * Returns reduced form of style property form normalized object.
 	 *
 	 * @param {String} name
-	 * @param {Object|String} normalizedValue
-	 * @returns {module:engine/view/stylesmap~PropertyEntry}
+	 * @param {String} name Name of style property.
+	 * @param {Object} styles Object holding normalized styles.
 	 */
-	getReducedForm( name, normalizedValue ) {
+	getReducedForm( name, styles ) {
+		const normalizedValue = this.getNormalized( name, styles );
+
 		if ( this._reducers.has( name ) ) {
 			const reducer = this._reducers.get( name );
 

+ 13 - 13
packages/ckeditor5-engine/tests/view/styles/borderstyles.js

@@ -99,7 +99,7 @@ describe( 'Border styles normalization', () => {
 			'border-top:7px dotted #ccc;'
 		);
 
-		expect( styles.getAsString( 'border' ) ).to.be.undefined;
+		expect( styles.getAsString( 'border' ) ).to.equal( '' );
 		expect( styles.getAsString( 'border-color' ) ).to.equal( '#ccc blue blue #665511' );
 		expect( styles.getAsString( 'border-style' ) ).to.equal( 'dotted solid solid dashed' );
 		expect( styles.getAsString( 'border-width' ) ).to.equal( '7px 1px 1px 2.7em' );
@@ -146,7 +146,7 @@ describe( 'Border styles normalization', () => {
 			'border-right:1px solid blue;' +
 			'border-top:7px dotted #ccc;'
 		);
-		expect( styles.getAsString( 'border' ) ).to.be.undefined;
+		expect( styles.getAsString( 'border' ) ).to.equal( '' );
 		expect( styles.getAsString( 'border-color' ) ).to.equal( '#ccc blue blue #665511' );
 		expect( styles.getAsString( 'border-style' ) ).to.equal( 'dotted solid solid dashed' );
 		expect( styles.getAsString( 'border-width' ) ).to.equal( '7px 1px 1px 2.7em' );
@@ -163,8 +163,8 @@ describe( 'Border styles normalization', () => {
 			'border-top:1px solid;'
 		);
 
-		expect( styles.getAsString( 'border' ) ).to.be.undefined;
-		expect( styles.getAsString( 'border-color' ) ).to.be.undefined;
+		expect( styles.getAsString( 'border' ) ).to.equal( '' );
+		expect( styles.getAsString( 'border-color' ) ).to.equal( '' );
 		expect( styles.getAsString( 'border-style' ) ).to.equal( 'solid' );
 		expect( styles.getAsString( 'border-width' ) ).to.equal( '1px' );
 		expect( styles.getAsString( 'border-top' ) ).to.equal( '1px solid' );
@@ -182,10 +182,10 @@ describe( 'Border styles normalization', () => {
 			'border-right:solid;' +
 			'border-top:solid;'
 		);
-		expect( styles.getAsString( 'border' ) ).to.be.undefined;
-		expect( styles.getAsString( 'border-color' ) ).to.be.undefined;
+		expect( styles.getAsString( 'border' ) ).to.equal( '' );
+		expect( styles.getAsString( 'border-color' ) ).to.equal( '' );
 		expect( styles.getAsString( 'border-style' ) ).to.equal( 'solid' );
-		expect( styles.getAsString( 'border-width' ) ).to.be.undefined;
+		expect( styles.getAsString( 'border-width' ) ).to.equal( '' );
 		expect( styles.getAsString( 'border-top' ) ).to.equal( 'solid' );
 		expect( styles.getAsString( 'border-right' ) ).to.equal( 'solid' );
 		expect( styles.getAsString( 'border-bottom' ) ).to.equal( 'solid' );
@@ -201,10 +201,10 @@ describe( 'Border styles normalization', () => {
 			'border-right:#f00;' +
 			'border-top:#f00;'
 		);
-		expect( styles.getAsString( 'border' ) ).to.be.undefined;
+		expect( styles.getAsString( 'border' ) ).to.equal( '' );
 		expect( styles.getAsString( 'border-color' ) ).to.equal( '#f00' );
-		expect( styles.getAsString( 'border-style' ) ).to.be.undefined;
-		expect( styles.getAsString( 'border-width' ) ).to.be.undefined;
+		expect( styles.getAsString( 'border-style' ) ).to.equal( '' );
+		expect( styles.getAsString( 'border-width' ) ).to.equal( '' );
 		expect( styles.getAsString( 'border-top' ) ).to.equal( '#f00' );
 		expect( styles.getAsString( 'border-right' ) ).to.equal( '#f00' );
 		expect( styles.getAsString( 'border-bottom' ) ).to.equal( '#f00' );
@@ -220,9 +220,9 @@ describe( 'Border styles normalization', () => {
 			'border-right:1px;' +
 			'border-top:1px;'
 		);
-		expect( styles.getAsString( 'border' ) ).to.be.undefined;
-		expect( styles.getAsString( 'border-color' ) ).to.be.undefined;
-		expect( styles.getAsString( 'border-style' ) ).to.be.undefined;
+		expect( styles.getAsString( 'border' ) ).to.equal( '' );
+		expect( styles.getAsString( 'border-color' ) ).to.equal( '' );
+		expect( styles.getAsString( 'border-style' ) ).to.equal( '' );
 		expect( styles.getAsString( 'border-width' ) ).to.equal( '1px' );
 		expect( styles.getAsString( 'border-top' ) ).to.equal( '1px' );
 		expect( styles.getAsString( 'border-right' ) ).to.equal( '1px' );