Table of Contents

Class PositionMap

Namespace
TextEdit.Core
Assembly
TextEdit.Core.dll

Maps exact UTF-16 positions through a validated sequence of replacements.

public sealed class PositionMap
Inheritance
PositionMap
Inherited Members

Constructors

PositionMap(int, IEnumerable<PositionChange>)

Creates a map from sequential replacement coordinates.

public PositionMap(int oldLength, IEnumerable<PositionChange> changes)

Parameters

oldLength int
changes IEnumerable<PositionChange>

Properties

Changes

Gets sequential replacement geometry.

public ImmutableArray<PositionChange> Changes { get; }

Property Value

ImmutableArray<PositionChange>

NewLength

Gets source length after the last replacement.

public int NewLength { get; }

Property Value

int

OldLength

Gets source length before the first replacement.

public int OldLength { get; }

Property Value

int

Methods

Invert()

Creates the inverse geometry in reverse operation order. Deleted interior positions cannot be reconstructed from coordinates alone.

public PositionMap Invert()

Returns

PositionMap

Map(int, PositionAffinity, bool)

Maps an endpoint. Positions in replaced source collapse according to affinity, or return null when invalidation is requested.

public int? Map(int position, PositionAffinity affinity = PositionAffinity.AfterInsertion, bool invalidateOnDeletion = false)

Parameters

position int
affinity PositionAffinity
invalidateOnDeletion bool

Returns

int?

Map(TextSelectionSet)

Maps directional selections while retaining identities and primary ownership.

public TextSelectionSet Map(TextSelectionSet selections)

Parameters

selections TextSelectionSet

Returns

TextSelectionSet

Map(TextSpan, PositionAffinity, PositionAffinity, bool)

Maps a range with independent endpoint affinities. Optional invalidation detects deletion of any covered source.

public TextSpan? Map(TextSpan range, PositionAffinity startAffinity = PositionAffinity.AfterInsertion, PositionAffinity endAffinity = PositionAffinity.BeforeInsertion, bool invalidateOnDeletion = false)

Parameters

range TextSpan
startAffinity PositionAffinity
endAffinity PositionAffinity
invalidateOnDeletion bool

Returns

TextSpan?

Then(PositionMap)

Appends a subsequent map whose input length matches this map's output.

public PositionMap Then(PositionMap next)

Parameters

next PositionMap

Returns

PositionMap