Class

TreeWalker (engine/view)

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

class

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

Filtering

Properties

  • boundaries : Range

    readonly

    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.

  • direction : 'backward' | 'forward'

    readonly

    Walking direction. Defaults 'forward'.

  • ignoreElementEnd : Boolean

    readonly

    Flag indicating whether iterator should ignore elementEnd tags. If set to true, walker will not return a parent node of the start position. Each Element will be returned once. When set to false each element might be returned twice: for 'elementStart' and 'elementEnd'.

  • position : Position

    readonly

    Iterator 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.

  • shallow : Boolean

    readonly

    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.

  • singleCharacters : Boolean

    readonly

    Flag indicating whether all characters from Text should be returned as one Text or one by one as TextProxy.

  • _boundaryEndParent : Node

    private

    End boundary parent.

  • _boundaryStartParent : Node

    private

    Start boundary parent.

Methods

  • constructor( options = { [options.boundaries], [options.startPosition], [options.direction], [options.singleCharacters], [options.shallow], [options.ignoreElementEnd] } )

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

    Parameters

    options : Object

    Object with configuration.

    Properties
    [ options.boundaries ] : Range

    Range to define boundaries of the iterator.

    [ options.startPosition ] : Position

    Starting position.

    [ options.direction ] : 'forward' | 'backward'

    Walking direction.

    Defaults to 'forward'

    [ options.singleCharacters ] : Boolean

    Flag indicating whether all characters from Text should be returned as one Text (false) ore one by one as TextProxy (true).

    Defaults to false

    [ options.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.

    Defaults to false

    [ options.ignoreElementEnd ] : Boolean

    Flag indicating whether iterator should ignore elementEnd tags. If the option is true walker will not return a parent node of 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'.

    Defaults to false

  • Symbol.iterator() → Iterable.<TreeWalkerValue>

    Iterable interface.

    Returns

    Iterable.<TreeWalkerValue>
  • next() → TreeWalkerValue

    Gets the next tree walker's value.

    Returns

    TreeWalkerValue

    Object implementing iterator interface, returning information about taken step.

  • skip( skip )

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

    For example:

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

    Parameters

    skip : function

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

  • _formatReturnValue( type, item, previousPosition, nextPosition, [ length ] ) → TreeWalkerValue

    private

    Format returned data and adjust previousPosition and nextPosition if reach the bound of the Text.

    Parameters

    type : TreeWalkerValueType

    Type of step.

    item : Item

    Item between old and new position.

    previousPosition : Position

    Previous position of iterator.

    nextPosition : Position

    Next position of iterator.

    [ length ] : Number

    Length of the item.

    Returns

    TreeWalkerValue
  • _next() → Object

    private

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

    Returns

    Object
    Boolean

    return.done true if iterator is done, false otherwise.

    TreeWalkerValue

    return.value Information about taken step.

  • _previous() → Object

    private

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

    Returns

    Object
    Boolean

    return.done True if iterator is done.

    TreeWalkerValue

    return.value Information about taken step.