8
0
Просмотр исходного кода

First batch of changes updating schema use to match the new API.

Piotrek Koszuliński 8 лет назад
Родитель
Сommit
d822970a8f

+ 1 - 1
packages/ckeditor5-image/src/image/converters.js

@@ -211,7 +211,7 @@ function _findAllowedContext( modelData, context, schema ) {
 		const parentName = typeof parent === 'string' ? parent : parent.name;
 
 		// Do not try to autohoist "above" limiting element.
-		if ( schema.limits.has( parentName ) ) {
+		if ( schema.isLimit( parentName ) ) {
 			return null;
 		}
 	}

+ 6 - 4
packages/ckeditor5-image/src/image/imageengine.js

@@ -41,10 +41,12 @@ export default class ImageEngine extends Plugin {
 		const t = editor.t;
 
 		// Configure schema.
-		schema.registerItem( 'image' );
-		schema.requireAttributes( 'image', [ 'src' ] );
-		schema.allow( { name: 'image', attributes: [ 'alt', 'src', 'srcset' ], inside: '$root' } );
-		schema.objects.add( 'image' );
+		schema.register( 'image', {
+			isObject: true,
+			isBlock: true,
+			allowWhere: '$block',
+			allowAttributes: [ 'alt', 'src', 'srcset' ]
+		} );
 
 		// Build converter from model to view for data pipeline.
 		buildModelConverter().for( data.modelToView )

+ 6 - 4
packages/ckeditor5-image/src/imagecaption/imagecaptionengine.js

@@ -59,10 +59,12 @@ export default class ImageCaptionEngine extends Plugin {
 		this._createCaption = captionElementCreator( viewDocument, t( 'Enter image caption' ) );
 
 		// Schema configuration.
-		schema.registerItem( 'caption', '$block' );
-		schema.allow( { name: '$inline', inside: 'caption' } );
-		schema.allow( { name: 'caption', inside: 'image' } );
-		schema.limits.add( 'caption' );
+		schema.register( 'caption', { inheritAllFrom: '$block' } );
+		schema.extend( '$text', { allowIn: 'caption' } );
+		schema.extend( 'caption', {
+			allowIn: 'image',
+			isLimit: true
+		} );
 
 		// Add caption element to each image inserted without it.
 		document.on( 'change', ( evt, type, data, batch ) => this._insertMissingModelCaptionElement( type, data, batch ) );

+ 1 - 1
packages/ckeditor5-image/src/imagestyle/imagestyleengine.js

@@ -56,7 +56,7 @@ export default class ImageStyleEngine extends Plugin {
 
 		// Allow imageStyle attribute in image.
 		// We could call it 'style' but https://github.com/ckeditor/ckeditor5-engine/issues/559.
-		schema.allow( { name: 'image', attributes: 'imageStyle', inside: '$root' } );
+		schema.extend( 'image', { allowAttributes: 'imageStyle' } );
 
 		// Converters for imageStyle attribute from model to view.
 		const modelToViewConverter = modelToViewStyleAttribute( styles );

+ 14 - 12
packages/ckeditor5-image/tests/image/converters.js

@@ -34,10 +34,12 @@ describe( 'Image converters', () => {
 
 				const schema = model.schema;
 
-				schema.registerItem( 'image' );
-				schema.requireAttributes( 'image', [ 'src' ] );
-				schema.allow( { name: 'image', attributes: [ 'alt', 'src' ], inside: '$root' } );
-				schema.objects.add( 'image' );
+				schema.register( 'image', {
+					allowWhere: '$block',
+					allowAttributes: [ 'alt', 'src' ],
+					isObject: true,
+					isBlock: true
+				} );
 
 				buildModelConverter().for( editor.editing.modelToView )
 					.fromElement( 'image' )
@@ -59,7 +61,7 @@ describe( 'Image converters', () => {
 			imgConverterCalled = false;
 
 			schema = model.schema;
-			schema.allow( { name: '$text', inside: 'image' } );
+			schema.extend( '$text', { allowIn: 'image' } );
 
 			dispatcher = editor.data.viewToModel;
 			dispatcher.on( 'element:figure', viewFigureToModel() );
@@ -83,10 +85,10 @@ describe( 'Image converters', () => {
 			buildViewConverter().for( editor.data.viewToModel ).fromElement( 'foo' ).toElement( 'foo' );
 			buildViewConverter().for( editor.data.viewToModel ).fromElement( 'bar' ).toElement( 'bar' );
 
-			schema.registerItem( 'foo' );
-			schema.registerItem( 'bar' );
+			schema.register( 'foo' );
+			schema.register( 'bar' );
 
-			schema.allow( { name: 'foo', inside: 'image' } );
+			schema.extend( 'foo', { allowIn: 'image' } );
 
 			editor.setData( '<figure class="image">x<img src="foo.png" />y<foo></foo><bar></bar></figure>' );
 
@@ -255,7 +257,7 @@ describe( 'Image converters', () => {
 			} );
 
 			it( 'should not convert img element if allowed context is "above" limiting element #1', () => {
-				schema.limits.add( 'limit' );
+				schema.extend( 'limit', { isLimit: true } );
 
 				const result = dispatcher.convert( viewImg, { context: [ '$root', 'limit', 'div', 'paragraph' ] } );
 
@@ -265,7 +267,7 @@ describe( 'Image converters', () => {
 			} );
 
 			it( 'should not convert img element if allowed context is "above" limiting element #2', () => {
-				schema.limits.add( 'limit' );
+				schema.extend( 'limit', { isLimit: true } );
 
 				const result = dispatcher.convert( viewImg, { context: [ '$root', modelLimit, modelDiv, modelParagraph ] } );
 
@@ -277,7 +279,7 @@ describe( 'Image converters', () => {
 
 		describe( 'hoistImageThroughElement', () => {
 			it( 'should hoist img element that was converted by convertHoistableImage', () => {
-				schema.registerItem( 'div', '$block' );
+				schema.register( 'div', { inheritAllFrom: '$block' } );
 
 				buildModelConverter().for( editor.data.modelToView, editor.editing.modelToView ).fromElement( 'div' ).toElement( 'div' );
 				buildViewConverter().for( editor.data.viewToModel ).fromElement( 'div' ).toElement( 'div' );
@@ -301,7 +303,7 @@ describe( 'Image converters', () => {
 			it( 'should work fine with elements that are converted to document fragments', () => {
 				// The example here is <p> that contains some text and an <img> and is converted in $root > div context.
 				// This way we enable autohoisting for <img> and test how it will work when <p> is converted to model document fragment.
-				schema.registerItem( 'div', '$block' );
+				schema.register( 'div', { inheritAllFrom: '$block' } );
 
 				dispatcher.on( 'element:p', convertToModelFragment() );
 				dispatcher.on( 'element:p', hoistImageThroughElement, { priority: 'low' } );

+ 15 - 11
packages/ckeditor5-image/tests/image/imageengine.js

@@ -34,7 +34,7 @@ describe( 'ImageEngine', () => {
 
 	it( 'should set proper schema rules', () => {
 		expect( model.schema.check( { name: 'image', attributes: [ 'src', 'alt' ], inside: '$root' } ) ).to.be.true;
-		expect( model.schema.objects.has( 'image' ) ).to.be.true;
+		expect( model.schema.isObject( 'image' ) ).to.be.true;
 	} );
 
 	describe( 'conversion in data pipeline', () => {
@@ -171,7 +171,7 @@ describe( 'ImageEngine', () => {
 				const data = editor.data;
 				const editing = editor.editing;
 
-				model.schema.registerItem( 'div', '$block' );
+				model.schema.register( 'div', { inheritAllFrom: '$block' } );
 				model.schema.disallow( { name: 'image', inside: '$root', attributes: 'src' } );
 
 				buildModelConverter().for( data.modelToView, editing.modelToView ).fromElement( 'div' ).toElement( 'div' );
@@ -227,8 +227,10 @@ describe( 'ImageEngine', () => {
 				const data = editor.data;
 				const editing = editor.editing;
 
-				model.schema.registerItem( 'div', '$block' );
-				model.schema.allow( { name: 'div', attributes: 'alt', inside: '$root' } );
+				model.schema.register( 'div', {
+					inheritAllFrom: '$block',
+					allowAttributes: 'alt'
+				} );
 
 				buildModelConverter().for( data.modelToView, editing.modelToView ).fromElement( 'div' ).toElement( 'div' );
 				buildViewConverter().for( data.viewToModel ).fromElement( 'div' ).toElement( 'div' );
@@ -239,7 +241,7 @@ describe( 'ImageEngine', () => {
 			} );
 
 			it( 'should handle figure with two images', () => {
-				model.schema.allow( { name: '$text', inside: 'image' } );
+				model.schema.extend( '$text', { allowIn: 'image' } );
 
 				editor.setData( '<figure class="image"><img src="foo.jpg" /><img src="bar.jpg" />abc</figure>' );
 
@@ -284,7 +286,7 @@ describe( 'ImageEngine', () => {
 
 			describe( 'should autohoist images', () => {
 				beforeEach( () => {
-					model.schema.registerItem( 'div', '$block' );
+					model.schema.register( 'div', { inheritAllFrom: '$block' } );
 
 					buildModelConverter()
 						.for( editor.data.modelToView, editor.editing.modelToView )
@@ -339,7 +341,7 @@ describe( 'ImageEngine', () => {
 				} );
 
 				it( 'deep autohoisting #1', () => {
-					model.schema.allow( { name: 'div', inside: 'div' } );
+					model.schema.extend( 'div', { allowIn: 'div' } );
 
 					editor.setData( '<div>foo<div>xx<img src="foo.jpg" alt="foo" /></div>bar</div>' );
 
@@ -356,7 +358,7 @@ describe( 'ImageEngine', () => {
 				} );
 
 				it( 'deep autohoisting #2', () => {
-					model.schema.allow( { name: 'div', inside: 'div' } );
+					model.schema.extend( 'div', { allowIn: 'div' } );
 
 					editor.setData(
 						'<div>x</div>' +
@@ -370,9 +372,11 @@ describe( 'ImageEngine', () => {
 				} );
 
 				it( 'should not break a limiting element', () => {
-					model.schema.registerItem( 'limit', '$block' );
-					model.schema.allow( { name: 'div', inside: 'limit' } );
-					model.schema.limits.add( 'limit' );
+					model.schema.register( 'limit', {
+						inheritAllFrom: '$block',
+						isLimit: true
+					} );
+					model.schema.extend( 'div', { allowIn: 'limit' } );
 
 					buildModelConverter()
 						.for( editor.data.modelToView, editor.editing.modelToView ).fromElement( 'limit' ).toElement( 'limit' );

+ 6 - 7
packages/ckeditor5-image/tests/imagecaption/imagecaptionengine.js

@@ -35,10 +35,10 @@ describe( 'ImageCaptionEngine', () => {
 				model = editor.model;
 				doc = model.document;
 				viewDocument = editor.editing.view;
-				model.schema.registerItem( 'widget' );
-				model.schema.allow( { name: 'widget', inside: '$root' } );
-				model.schema.allow( { name: 'caption', inside: 'widget' } );
-				model.schema.allow( { name: '$inline', inside: 'widget' } );
+				model.schema.register( 'widget' );
+				model.schema.extend( 'widget', { allowIn: '$root' } );
+				model.schema.extend( 'caption', { allowIn: 'widget' } );
+				model.schema.extend( '$text', { allowIn: 'widget' } );
 
 				buildViewConverter()
 					.for( editor.data.viewToModel )
@@ -58,9 +58,8 @@ describe( 'ImageCaptionEngine', () => {
 
 	it( 'should set proper schema rules', () => {
 		expect( model.schema.check( { name: 'caption', iniside: 'image' } ) ).to.be.true;
-		expect( model.schema.check( { name: '$inline', inside: 'caption' } ) ).to.be.true;
-		expect( model.schema.itemExtends( 'caption', '$block' ) ).to.be.true;
-		expect( model.schema.limits.has( 'caption' ) );
+		expect( model.schema.check( { name: '$text', inside: 'caption' } ) ).to.be.true;
+		expect( model.schema.isLimit( 'caption' ) ).to.be.true;
 	} );
 
 	describe( 'data pipeline', () => {

+ 8 - 6
packages/ckeditor5-image/tests/imagestyle/imagestylecommand.js

@@ -20,12 +20,14 @@ describe( 'ImageStyleCommand', () => {
 				defaultStyleCommand = new ImageStyleCommand( newEditor, defaultStyle );
 				otherStyleCommand = new ImageStyleCommand( newEditor, otherStyle );
 
-				model.schema.registerItem( 'p', '$block' );
-
-				model.schema.registerItem( 'image' );
-				model.schema.objects.add( 'image' );
-				model.schema.allow( { name: 'image', inside: '$root' } );
-				model.schema.allow( { name: 'image', inside: '$root', attributes: [ 'imageStyle' ] } );
+				model.schema.register( 'p', { inheritAllFrom: '$block' } );
+
+				model.schema.register( 'image', {
+					isObject: true,
+					isBlock: true,
+					allowWhere: '$block',
+					allowAttributes: 'imageStyle'
+				} );
 			} );
 	} );
 

+ 8 - 6
packages/ckeditor5-image/tests/imagetextalternative/imagetextalternativecommand.js

@@ -16,12 +16,14 @@ describe( 'ImageTextAlternativeCommand', () => {
 				model = newEditor.model;
 				command = new ImageTextAlternativeCommand( newEditor );
 
-				model.schema.registerItem( 'p', '$block' );
-
-				model.schema.registerItem( 'image' );
-				model.schema.requireAttributes( 'image', [ 'src' ] );
-				model.schema.allow( { name: 'image', attributes: [ 'alt', 'src' ], inside: '$root' } );
-				model.schema.objects.add( 'image' );
+				model.schema.register( 'p', { inheritAllFrom: '$block' } );
+
+				model.schema.register( 'image', {
+					allowWhere: '$block',
+					isObject: true,
+					isBlock: true,
+					alllowAttributes: [ 'alt', 'src' ]
+				} );
 			} );
 	} );