Class

SchemaContext (engine/model)

@ckeditor/ckeditor5-engine/src/model/schema

class

A schema context — a list of ancestors of a given position in the document.

Considering such position:

<$root>
	<blockQuote>
		<paragraph>
			^
		</paragraph>
	</blockQuote>
</$root>

The context of this position is its lists of ancestors:

[ rootElement, blockQuoteElement, paragraphElement ]

Contexts are used in the Schema#checkChild and Schema#checkAttribute events as a definition of a place in the document where the check occurs. The context instances are created based on the first arguments of the Schema#checkChild() and Schema#checkAttribute() methods so when using these methods you need to use SchemaContextDefinitions.

Filtering

Properties

Methods

  • constructor( context )

    Creates an instance of the context.

    Parameters

    context : SchemaContextDefinition
  • Symbol.iterator() → Iterable.<SchemaContextItem>

    Iterable interface.

    Iterates over all context items.

    Returns

    Iterable.<SchemaContextItem>
  • endsWith( query ) → Boolean

    Checks whether the context ends with the given nodes.

    const ctx = new SchemaContext( [ rootElement, paragraphElement, textNode ] );
    
    ctx.endsWith( '$text' ); // -> true
    ctx.endsWith( 'paragraph $text' ); // -> true
    ctx.endsWith( '$root' ); // -> false
    ctx.endsWith( 'paragraph' ); // -> false

    Parameters

    query : String

    Returns

    Boolean
  • getItem() → SchemaContextItem

    Gets an item on the given index.

  • getNames() → Iterable.<String>

    Returns the names of items.

    Returns

    Iterable.<String>
  • push( item ) → SchemaContext

    Returns a new schema context instance with an additional item.

    Item can be added as:

    const context = new SchemaContext( [ '$root' ] );
    
    // An element.
    const fooElement = writer.createElement( 'fooElement' );
    const newContext = context.push( fooElement ); // [ '$root', 'fooElement' ]
    
    // A text node.
    const text = writer.createText( 'foobar' );
    const newContext = context.push( text ); // [ '$root', '$text' ]
    
    // A string (element name).
    const newContext = context.push( 'barElement' ); // [ '$root', 'barElement' ]
    

    Note Node that is already in the model tree will be added as the only item (without ancestors).

    Parameters

    item : String | Node | Array.<(String | Node)>

    An item that will be added to the current context.

    Returns

    SchemaContext

    A new schema context instance with an additional item.

  • startsWith( query ) → Boolean

    Checks whether the context starts with the given nodes.

    const ctx = new SchemaContext( [ rootElement, paragraphElement, textNode ] );
    
    ctx.endsWith( '$root' ); // -> true
    ctx.endsWith( '$root paragraph' ); // -> true
    ctx.endsWith( '$text' ); // -> false
    ctx.endsWith( 'paragraph' ); // -> false

    Parameters

    query : String

    Returns

    Boolean