Class

TreeWalker (engine/model)

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

class

Position iterator class. It allows to iterate forward and backward over the document.

Filtering

Properties

  • readonly

    boundaries : null | Range

    Iterator boundaries.

    When the iterator is walking 'forward' on the end of boundary or is walking 'backward' on the start of boundary, then { done: true } is returned.

    If boundaries are not defined they are set before first and after last child of the root node.

  • readonly

    direction : TreeWalkerDirection

    Walking direction. Defaults 'forward'.

  • readonly

    ignoreElementEnd : boolean

    Flag indicating whether iterator should ignore elementEnd tags. If the option is true walker will not return a parent node of the start position. If this option is true each Element will be returned once, while if the option is false they might be returned twice: for 'elementStart' and 'elementEnd'.

  • readonly

    position : Position

    Iterator position. This is always static position, even if the initial position was a live position. If start position is not defined then position depends on direction. If direction is 'forward' position starts form the beginning, when direction is 'backward' position starts from the end.

  • readonly

    shallow : boolean

    Flag indicating whether iterator should enter elements or not. If the iterator is shallow child nodes of any iterated node will not be returned along with elementEnd tag.

  • readonly

    singleCharacters : boolean

    Flag indicating whether all consecutive characters with the same attributes should be returned as one TextProxy (true) or one by one (false).

  • private

    _boundaryEndParent : null | Element | DocumentFragment

    End boundary cached for optimization purposes.

  • private

    _boundaryStartParent : null | Element | DocumentFragment

    Start boundary cached for optimization purposes.

  • private

    _position : Position

    Iterator position. This is always static position, even if the initial position was a live position. If start position is not defined then position depends on direction. If direction is 'forward' position starts form the beginning, when direction is 'backward' position starts from the end.

  • private

    _visitedParent : Element | DocumentFragment

    Parent of the most recently visited node. Cached for optimization purposes.

Methods

  • constructor( options )

    Creates a range iterator. All parameters are optional, but you have to specify either boundaries or startPosition.

    Parameters

    options : TreeWalkerOptions

    Object with configuration.

  • Symbol.iterator() → IterableIterator<TreeWalkerValue>

    Iterable interface.

    Returns

    IterableIterator<TreeWalkerValue>
  • next() → IteratorResult<TreeWalkerValue, any>

    Gets the next tree walker's value.

    Returns

    IteratorResult<TreeWalkerValue, any>
  • skip( skip ) → void

    Moves position in the direction skipping values as long as the callback function returns true.

    For example:

    walker.skip( value => value.type == 'text' ); // <paragraph>[]foo</paragraph> -> <paragraph>foo[]</paragraph>
    walker.skip( () => true ); // Move the position to the end: <paragraph>[]foo</paragraph> -> <paragraph>foo</paragraph>[]
    walker.skip( () => false ); // Do not move the position.
    

    Parameters

    skip : ( TreeWalkerValue ) => boolean

    Callback function. Gets TreeWalkerValue and should return true if the value should be skipped or false if not.

    Returns

    void
  • private

    _next() → IteratorResult<TreeWalkerValue, any>

    Makes a step forward in model. Moves the position to the next position and returns the encountered value.

    Returns

    IteratorResult<TreeWalkerValue, any>
  • private

    _previous() → IteratorResult<TreeWalkerValue, any>

    Makes a step backward in model. Moves the position to the previous position and returns the encountered value.

    Returns

    IteratorResult<TreeWalkerValue, any>