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
oldLengthintchangesIEnumerable<PositionChange>
Properties
Changes
Gets sequential replacement geometry.
public ImmutableArray<PositionChange> Changes { get; }
Property Value
NewLength
Gets source length after the last replacement.
public int NewLength { get; }
Property Value
OldLength
Gets source length before the first replacement.
public int OldLength { get; }
Property Value
Methods
Invert()
Creates the inverse geometry in reverse operation order. Deleted interior positions cannot be reconstructed from coordinates alone.
public PositionMap Invert()
Returns
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
positionintaffinityPositionAffinityinvalidateOnDeletionbool
Returns
- int?
Map(TextSelectionSet)
Maps directional selections while retaining identities and primary ownership.
public TextSelectionSet Map(TextSelectionSet selections)
Parameters
selectionsTextSelectionSet
Returns
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
rangeTextSpanstartAffinityPositionAffinityendAffinityPositionAffinityinvalidateOnDeletionbool
Returns
Then(PositionMap)
Appends a subsequent map whose input length matches this map's output.
public PositionMap Then(PositionMap next)
Parameters
nextPositionMap