Răsfoiți Sursa

Parse styles independently.

Maciej Gołaszewski 6 ani în urmă
părinte
comite
e90eeb1b42

+ 11 - 9
packages/ckeditor5-engine/src/view/styles.js

@@ -93,7 +93,7 @@ export class StylesConverter {
 	 * @param {Object|String} normalizedValue
 	 * @returns {Array.<Array.<String, String>>}
 	 */
-	_getReduceForm( styleName, normalizedValue ) {
+	getReduceForm( styleName, normalizedValue ) {
 		const data = {
 			value: normalizedValue
 		};
@@ -148,7 +148,7 @@ export class StylesConverter {
 	 * @param {Object} styles
 	 * @private
 	 */
-	_toNormalizedForm( propertyName, value, styles ) {
+	toNormalizedForm( propertyName, value, styles ) {
 		if ( isObject( value ) ) {
 			appendStyleValue( styles, toPath( propertyName ), value );
 
@@ -185,12 +185,14 @@ export default class Styles {
 	/**
 	 * Creates Styles instance.
 	 */
-	constructor() {
+	constructor( converter = stylesConverter ) {
 		/**
 		 * @type {{}}
 		 * @private
 		 */
 		this._styles = {};
+
+		this.converter = converter;
 	}
 
 	/**
@@ -215,7 +217,7 @@ export default class Styles {
 		for ( const key of map.keys() ) {
 			const value = map.get( key );
 
-			stylesConverter._toNormalizedForm( key, value, this._styles );
+			this.converter.toNormalizedForm( key, value, this._styles );
 		}
 	}
 
@@ -260,7 +262,7 @@ export default class Styles {
 				this.insertProperty( key, nameOrObject[ key ] );
 			}
 		} else {
-			stylesConverter._toNormalizedForm( nameOrObject, value, this._styles );
+			this.converter.toNormalizedForm( nameOrObject, value, this._styles );
 		}
 	}
 
@@ -293,7 +295,7 @@ export default class Styles {
 	 * @returns {Object|undefined}
 	 */
 	getNormalized( name ) {
-		return stylesConverter.getNormalized( name, this._styles );
+		return this.converter.getNormalized( name, this._styles );
 	}
 
 	/**
@@ -327,7 +329,7 @@ export default class Styles {
 		}
 
 		if ( isObject( normalized ) ) {
-			const styles = stylesConverter._getReduceForm( propertyName, normalized );
+			const styles = stylesConverter.getReduceForm( propertyName, normalized );
 
 			const propertyDescriptor = styles.find( ( [ property ] ) => property === propertyName );
 
@@ -370,9 +372,9 @@ export default class Styles {
 		const keys = Object.keys( this._styles ).sort();
 
 		for ( const key of keys ) {
-			const normalized = stylesConverter.getNormalized( key, this._styles );
+			const normalized = this.converter.getNormalized( key, this._styles );
 
-			parsed.push( ...stylesConverter._getReduceForm( key, normalized ) );
+			parsed.push( ...this.converter.getReduceForm( key, normalized ) );
 		}
 
 		return parsed;

+ 5 - 2
packages/ckeditor5-engine/tests/view/styles/backgroundstyles.js

@@ -3,13 +3,16 @@
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
  */
 
-import Styles from '../../../src/view/styles';
+import Styles, { StylesConverter } from '../../../src/view/styles';
+import BackgroundStyles from '../../../src/view/styles/backgroundstyles';
 
 describe( 'Background styles normalization', () => {
 	let styles;
 
 	beforeEach( () => {
-		styles = new Styles();
+		const converter = new StylesConverter();
+		BackgroundStyles.attach( converter );
+		styles = new Styles( converter );
 	} );
 
 	it( 'should normalize background', () => {

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

@@ -3,13 +3,16 @@
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
  */
 
-import Styles from '../../../src/view/styles';
+import Styles, { StylesConverter } from '../../../src/view/styles';
+import BorderStyles from '../../../src/view/styles/borderstyles';
 
 describe( 'Border styles normalization', () => {
 	let styles;
 
 	beforeEach( () => {
-		styles = new Styles();
+		const converter = new StylesConverter();
+		BorderStyles.attach( converter );
+		styles = new Styles( converter );
 	} );
 
 	it( 'should parse border shorthand', () => {

+ 5 - 2
packages/ckeditor5-engine/tests/view/styles/marginstyles.js

@@ -3,13 +3,16 @@
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
  */
 
-import Styles from '../../../src/view/styles';
+import Styles, { StylesConverter } from '../../../src/view/styles';
+import MarginStyles from '../../../src/view/styles/marginstyles';
 
 describe( 'Margin styles normalizer', () => {
 	let styles;
 
 	beforeEach( () => {
-		styles = new Styles();
+		const converter = new StylesConverter();
+		MarginStyles.attach( converter );
+		styles = new Styles( converter );
 	} );
 
 	it( 'should set all margins (1 value defined)', () => {

+ 5 - 2
packages/ckeditor5-engine/tests/view/styles/paddingstyles.js

@@ -3,13 +3,16 @@
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
  */
 
-import Styles from '../../../src/view/styles';
+import Styles, { StylesConverter } from '../../../src/view/styles';
+import PaddingStyles from '../../../src/view/styles/paddingstyles';
 
 describe( 'Padding styles normalization', () => {
 	let styles;
 
 	beforeEach( () => {
-		styles = new Styles();
+		const converter = new StylesConverter();
+		PaddingStyles.attach( converter );
+		styles = new Styles( converter );
 	} );
 
 	it( 'should set all paddings (1 value defined)', () => {