Class SegmentBuilderBase<S extends SegmentBuilderBase<S>>
- java.lang.Object
-
- com.vladsch.flexmark.util.sequence.builder.SegmentBuilderBase<S>
-
- All Implemented Interfaces:
ISegmentBuilder<S>,java.lang.Iterable<java.lang.Object>
- Direct Known Subclasses:
BasedSegmentBuilder,PlainSegmentBuilder
public class SegmentBuilderBase<S extends SegmentBuilderBase<S>> extends java.lang.Object implements ISegmentBuilder<S>
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) static classSegmentBuilderBase.PartsIterator(package private) static classSegmentBuilderBase.SegIterable(package private) static classSegmentBuilderBase.SegIterator-
Nested classes/interfaces inherited from interface com.vladsch.flexmark.util.sequence.builder.ISegmentBuilder
ISegmentBuilder.Options
-
-
Field Summary
Fields Modifier and Type Field Description protected intanchorsSizestatic int[]EMPTY_PARTSprotected intendOffsetprotected intimmutableOffsetprotected intlengthstatic intMIN_PART_CAPACITYprotected intoptionsprotected @org.jetbrains.annotations.NotNull int[]partsprotected intpartsSizeprotected intstartOffsetprotected SegmentStatsstatsprotected java.lang.StringBuildertextprotected SegmentStatstextStats-
Fields inherited from interface com.vladsch.flexmark.util.sequence.builder.ISegmentBuilder
F_DEFAULT, F_INCLUDE_ANCHORS, F_TRACK_FIRST256, O_INCLUDE_ANCHORS, O_TRACK_FIRST256
-
-
Constructor Summary
Constructors Modifier Constructor Description protectedSegmentBuilderBase()protectedSegmentBuilderBase(int options)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private voidaddSeg(int startOffset, int endOffset)private voidaddText(java.lang.CharSequence optText)Sappend(char c)Sappend(char c, int repeat)Sappend(int startOffset, int endOffset)append range in original sequence coordinates, no checking is done other than overlap with tail range fastSappend(@NotNull Range range)append range in original sequence coordinates, no checking is done other than overlap with tail range fastSappend(@NotNull java.lang.CharSequence text)SappendAnchor(int offset)append anchor in original sequence coordinates, no checking is done other than overlap with tail range fastprivate voidcommitText()private intcomputeLength()private static int[]ensureCapacity(@org.jetbrains.annotations.NotNull int[] prev, int size)private voidensureCapacity(int size)@Nullable RangegetBaseSubSequenceRange()intgetEndOffset()intgetEndOffsetIfNeeded()intgetOptions()@NotNull java.lang.ObjectgetPart(int index)private @NotNull SeggetSeg(int index)@NotNull java.lang.Iterable<Seg>getSegments()Return iterator over segmentsprivate @Nullable SeggetSegOrNull(int index)(package private) @NotNull SeggetSegPart(int index)intgetSpan()Span for offsets of this listintgetStartOffset()intgetStartOffsetIfNeeded()SegmentStatsgetStats()java.lang.CharSequencegetText()intgetTextFirst256Length()intgetTextFirst256Segments()intgetTextLength()intgetTextSegments()intgetTextSpaceLength()intgetTextSpaceSegments()protected java.lang.Object[]handleOverlap(@NotNull java.lang.Object[] parts)protected booleanhaveDanglingText()booleanhaveOffsets()booleanisBaseSubSequenceRange()booleanisEmpty()booleanisIncludeAnchors()booleanisTrackTextFirst256()@NotNull java.util.Iterator<java.lang.Object>iterator()Return iterator over segment parts Range - BASE CharSequence - TEXTprivate @Nullable SeglastSegOrNull()intlength()booleanneedEndOffset()booleanneedStartOffset()intnoAnchorsSize()protected java.lang.Object[]optimizeText(@NotNull java.lang.Object[] parts)private voidprocessParts(int segStart, int segEnd, boolean resolveOverlap, boolean nullNextRange, @NotNull java.util.function.Function<java.lang.Object[],java.lang.Object[]> transform)private voidsetSegEnd(int index, int endOffset)intsize()java.lang.StringtoString()@NotNull java.lang.StringtoString(@NotNull java.lang.CharSequence chars)@NotNull java.lang.StringtoString(@NotNull java.lang.CharSequence chars, @NotNull java.lang.CharSequence rangePrefix, @NotNull java.lang.CharSequence rangeSuffix, @NotNull java.util.function.Function<java.lang.CharSequence,java.lang.CharSequence> textMapper)java.lang.StringtoStringPrep()@NotNull java.lang.StringtoStringWithRanges(@NotNull java.lang.CharSequence chars)@NotNull java.lang.StringtoStringWithRangesVisibleWhitespace(@NotNull java.lang.CharSequence chars)voidtrimToSize()
-
-
-
Field Detail
-
MIN_PART_CAPACITY
public static final int MIN_PART_CAPACITY
- See Also:
- Constant Field Values
-
EMPTY_PARTS
public static final int[] EMPTY_PARTS
-
parts
@NotNull protected @org.jetbrains.annotations.NotNull int[] parts
-
partsSize
protected int partsSize
-
anchorsSize
protected int anchorsSize
-
startOffset
protected int startOffset
-
endOffset
protected int endOffset
-
length
protected int length
-
stats
protected final SegmentStats stats
-
textStats
protected final SegmentStats textStats
-
options
protected final int options
-
text
protected final java.lang.StringBuilder text
-
immutableOffset
protected int immutableOffset
-
-
Method Detail
-
ensureCapacity
private static int[] ensureCapacity(@NotNull @org.jetbrains.annotations.NotNull int[] prev, int size)
-
ensureCapacity
private void ensureCapacity(int size)
-
trimToSize
public void trimToSize()
-
getStartOffset
public int getStartOffset()
- Specified by:
getStartOffsetin interfaceISegmentBuilder<S extends SegmentBuilderBase<S>>
-
needStartOffset
public boolean needStartOffset()
-
getStartOffsetIfNeeded
public int getStartOffsetIfNeeded()
-
getEndOffset
public int getEndOffset()
- Specified by:
getEndOffsetin interfaceISegmentBuilder<S extends SegmentBuilderBase<S>>
-
needEndOffset
public boolean needEndOffset()
-
getEndOffsetIfNeeded
public int getEndOffsetIfNeeded()
-
isEmpty
public boolean isEmpty()
- Specified by:
isEmptyin interfaceISegmentBuilder<S extends SegmentBuilderBase<S>>
-
isBaseSubSequenceRange
public boolean isBaseSubSequenceRange()
- Specified by:
isBaseSubSequenceRangein interfaceISegmentBuilder<S extends SegmentBuilderBase<S>>
-
getBaseSubSequenceRange
@Nullable public @Nullable Range getBaseSubSequenceRange()
- Specified by:
getBaseSubSequenceRangein interfaceISegmentBuilder<S extends SegmentBuilderBase<S>>
-
haveOffsets
public boolean haveOffsets()
- Specified by:
haveOffsetsin interfaceISegmentBuilder<S extends SegmentBuilderBase<S>>
-
size
public int size()
- Specified by:
sizein interfaceISegmentBuilder<S extends SegmentBuilderBase<S>>
-
getText
public java.lang.CharSequence getText()
- Specified by:
getTextin interfaceISegmentBuilder<S extends SegmentBuilderBase<S>>
-
noAnchorsSize
public int noAnchorsSize()
- Specified by:
noAnchorsSizein interfaceISegmentBuilder<S extends SegmentBuilderBase<S>>
-
computeLength
private int computeLength()
-
length
public int length()
- Specified by:
lengthin interfaceISegmentBuilder<S extends SegmentBuilderBase<S>>
-
getStats
public SegmentStats getStats()
-
isTrackTextFirst256
public boolean isTrackTextFirst256()
- Specified by:
isTrackTextFirst256in interfaceISegmentBuilder<S extends SegmentBuilderBase<S>>
-
getTextLength
public int getTextLength()
- Specified by:
getTextLengthin interfaceISegmentBuilder<S extends SegmentBuilderBase<S>>
-
getTextSegments
public int getTextSegments()
- Specified by:
getTextSegmentsin interfaceISegmentBuilder<S extends SegmentBuilderBase<S>>
-
getTextSpaceLength
public int getTextSpaceLength()
- Specified by:
getTextSpaceLengthin interfaceISegmentBuilder<S extends SegmentBuilderBase<S>>
-
getTextSpaceSegments
public int getTextSpaceSegments()
- Specified by:
getTextSpaceSegmentsin interfaceISegmentBuilder<S extends SegmentBuilderBase<S>>
-
getTextFirst256Length
public int getTextFirst256Length()
- Specified by:
getTextFirst256Lengthin interfaceISegmentBuilder<S extends SegmentBuilderBase<S>>
-
getTextFirst256Segments
public int getTextFirst256Segments()
- Specified by:
getTextFirst256Segmentsin interfaceISegmentBuilder<S extends SegmentBuilderBase<S>>
-
iterator
@NotNull public @NotNull java.util.Iterator<java.lang.Object> iterator()
Description copied from interface:ISegmentBuilderReturn iterator over segment parts Range - BASE CharSequence - TEXT- Specified by:
iteratorin interfaceISegmentBuilder<S extends SegmentBuilderBase<S>>- Specified by:
iteratorin interfacejava.lang.Iterable<S extends SegmentBuilderBase<S>>- Returns:
- iterator over segment builder parts
-
getSegments
@NotNull public @NotNull java.lang.Iterable<Seg> getSegments()
Description copied from interface:ISegmentBuilderReturn iterator over segments- Specified by:
getSegmentsin interfaceISegmentBuilder<S extends SegmentBuilderBase<S>>- Returns:
- iterator over segment builder segments
-
getOptions
public int getOptions()
- Specified by:
getOptionsin interfaceISegmentBuilder<S extends SegmentBuilderBase<S>>
-
isIncludeAnchors
public boolean isIncludeAnchors()
- Specified by:
isIncludeAnchorsin interfaceISegmentBuilder<S extends SegmentBuilderBase<S>>
-
getSpan
public int getSpan()
Span for offsets of this list- Specified by:
getSpanin interfaceISegmentBuilder<S extends SegmentBuilderBase<S>>- Returns:
- -ve if no information in the list, or span of offsets
-
getSegOrNull
@Nullable private @Nullable Seg getSegOrNull(int index)
-
getSeg
@NotNull private @NotNull Seg getSeg(int index)
-
getPart
@NotNull public @NotNull java.lang.Object getPart(int index)
-
getSegPart
@NotNull @NotNull Seg getSegPart(int index)
-
setSegEnd
private void setSegEnd(int index, int endOffset)
-
addSeg
private void addSeg(int startOffset, int endOffset)
-
lastSegOrNull
@Nullable private @Nullable Seg lastSegOrNull()
-
haveDanglingText
protected boolean haveDanglingText()
-
optimizeText
protected java.lang.Object[] optimizeText(@NotNull @NotNull java.lang.Object[] parts)
-
handleOverlap
protected java.lang.Object[] handleOverlap(@NotNull @NotNull java.lang.Object[] parts)
-
processParts
private void processParts(int segStart, int segEnd, boolean resolveOverlap, boolean nullNextRange, @NotNull @NotNull java.util.function.Function<java.lang.Object[],java.lang.Object[]> transform)
-
commitText
private void commitText()
-
addText
private void addText(java.lang.CharSequence optText)
-
appendAnchor
@NotNull public S appendAnchor(int offset)
append anchor in original sequence coordinates, no checking is done other than overlap with tail range fast- Specified by:
appendAnchorin interfaceISegmentBuilder<S extends SegmentBuilderBase<S>>- Parameters:
offset- offset in original sequence- Returns:
- this
-
append
@NotNull public S append(@NotNull @NotNull Range range)
append range in original sequence coordinates, no checking is done other than overlap with tail range fast- Specified by:
appendin interfaceISegmentBuilder<S extends SegmentBuilderBase<S>>- Parameters:
range- range in original sequence- Returns:
- this
-
append
@NotNull public S append(int startOffset, int endOffset)
append range in original sequence coordinates, no checking is done other than overlap with tail range fast- Specified by:
appendin interfaceISegmentBuilder<S extends SegmentBuilderBase<S>>- Parameters:
startOffset- start offset in original sequenceendOffset- end offset in original sequence- Returns:
- this
-
append
@NotNull public S append(@NotNull @NotNull java.lang.CharSequence text)
- Specified by:
appendin interfaceISegmentBuilder<S extends SegmentBuilderBase<S>>
-
append
@NotNull public S append(char c)
-
append
@NotNull public S append(char c, int repeat)
-
toString
@NotNull public @NotNull java.lang.String toString(@NotNull @NotNull java.lang.CharSequence chars, @NotNull @NotNull java.lang.CharSequence rangePrefix, @NotNull @NotNull java.lang.CharSequence rangeSuffix, @NotNull @NotNull java.util.function.Function<java.lang.CharSequence,java.lang.CharSequence> textMapper)
-
toStringWithRangesVisibleWhitespace
@NotNull public @NotNull java.lang.String toStringWithRangesVisibleWhitespace(@NotNull @NotNull java.lang.CharSequence chars)- Specified by:
toStringWithRangesVisibleWhitespacein interfaceISegmentBuilder<S extends SegmentBuilderBase<S>>
-
toStringWithRanges
@NotNull public @NotNull java.lang.String toStringWithRanges(@NotNull @NotNull java.lang.CharSequence chars)- Specified by:
toStringWithRangesin interfaceISegmentBuilder<S extends SegmentBuilderBase<S>>
-
toString
@NotNull public @NotNull java.lang.String toString(@NotNull @NotNull java.lang.CharSequence chars)- Specified by:
toStringin interfaceISegmentBuilder<S extends SegmentBuilderBase<S>>
-
toStringPrep
public java.lang.String toStringPrep()
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
-