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

+ 22 - 0
packages/ckeditor5-engine/src/model/schema2.js

@@ -81,6 +81,28 @@ export default class Schema {
 		return this.getRules()[ itemName ];
 	}
 
+	isRegistered( itemName ) {
+		return !!this.getRule( itemName );
+	}
+
+	isBlock( itemName ) {
+		const rule = this.getRule( itemName );
+
+		return !!( rule && rule.isBlock );
+	}
+
+	isLimit( itemName ) {
+		const rule = this.getRule( itemName );
+
+		return !!( rule && rule.isLimit );
+	}
+
+	isObject( itemName ) {
+		const rule = this.getRule( itemName );
+
+		return !!( rule && rule.isObject );
+	}
+
 	checkChild( context, child ) {
 		const rule = this.getRule( child );
 

+ 72 - 0
packages/ckeditor5-engine/tests/model/schema/schema2.js

@@ -202,6 +202,78 @@ describe( 'Schema', () => {
 		// TODO
 	} );
 
+	describe( 'isRegistered()', () => {
+		it( 'returns true if an item was registered', () => {
+			schema.register( 'foo' );
+
+			expect( schema.isRegistered( 'foo' ) ).to.be.true;
+		} );
+
+		it( 'returns false if an item was not registered', () => {
+			expect( schema.isRegistered( 'foo' ) ).to.be.false;
+		} );
+	} );
+
+	describe( 'isBlock()', () => {
+		it( 'returns true if an item was registered as a block', () => {
+			schema.register( 'foo', {
+				isBlock: true
+			} );
+
+			expect( schema.isBlock( 'foo' ) ).to.be.true;
+		} );
+
+		it( 'returns false if an item was not registered as a block', () => {
+			schema.register( 'foo' );
+
+			expect( schema.isBlock( 'foo' ) ).to.be.false;
+		} );
+
+		it( 'returns false if an item was not registered at all', () => {
+			expect( schema.isBlock( 'foo' ) ).to.be.false;
+		} );
+	} );
+
+	describe( 'isLimit()', () => {
+		it( 'returns true if an item was registered as a limit element', () => {
+			schema.register( 'foo', {
+				isLimit: true
+			} );
+
+			expect( schema.isLimit( 'foo' ) ).to.be.true;
+		} );
+
+		it( 'returns false if an item was not registered as a limit element', () => {
+			schema.register( 'foo' );
+
+			expect( schema.isLimit( 'foo' ) ).to.be.false;
+		} );
+
+		it( 'returns false if an item was not registered at all', () => {
+			expect( schema.isLimit( 'foo' ) ).to.be.false;
+		} );
+	} );
+
+	describe( 'isObject()', () => {
+		it( 'returns true if an item was registered as an object', () => {
+			schema.register( 'foo', {
+				isObject: true
+			} );
+
+			expect( schema.isObject( 'foo' ) ).to.be.true;
+		} );
+
+		it( 'returns false if an item was not registered as an object', () => {
+			schema.register( 'foo' );
+
+			expect( schema.isObject( 'foo' ) ).to.be.false;
+		} );
+
+		it( 'returns false if an item was not registered at all', () => {
+			expect( schema.isObject( 'foo' ) ).to.be.false;
+		} );
+	} );
+
 	describe( 'checkChild()', () => {
 		describe( 'allowIn cases', () => {
 			it( 'passes $root>paragraph', () => {