Add clear after markdown render action and SpannableBuilder#clear
This commit is contained in:
parent
eabe1d9994
commit
c58c31d5fd
@ -63,10 +63,12 @@ class MarkwonImpl extends Markwon {
|
|||||||
plugin.afterRender(node, visitor);
|
plugin.afterRender(node, visitor);
|
||||||
}
|
}
|
||||||
|
|
||||||
// clear render props after rending
|
final Spanned spanned = visitor.builder().spannableStringBuilder();
|
||||||
renderProps.clearAll();
|
|
||||||
|
|
||||||
return visitor.builder().spannableStringBuilder();
|
// clear render props and builder after rending
|
||||||
|
visitor.clear();
|
||||||
|
|
||||||
|
return spanned;
|
||||||
}
|
}
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
|
@ -88,6 +88,11 @@ public interface MarkwonVisitor extends Visitor {
|
|||||||
*/
|
*/
|
||||||
void setSpans(int start, @Nullable Object spans);
|
void setSpans(int start, @Nullable Object spans);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clears state of visitor (both {@link RenderProps} and {@link SpannableBuilder} will be cleared
|
||||||
|
*/
|
||||||
|
void clear();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Helper method to obtain and apply spans for supplied Node. Internally queries {@link SpanFactory}
|
* Helper method to obtain and apply spans for supplied Node. Internally queries {@link SpanFactory}
|
||||||
* for the node (via {@link MarkwonSpansFactory#require(Node)} thus throwing an exception
|
* for the node (via {@link MarkwonSpansFactory#require(Node)} thus throwing an exception
|
||||||
|
@ -231,6 +231,12 @@ class MarkwonVisitorImpl implements MarkwonVisitor {
|
|||||||
SpannableBuilder.setSpans(builder, spans, start, builder.length());
|
SpannableBuilder.setSpans(builder, spans, start, builder.length());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void clear() {
|
||||||
|
renderProps.clearAll();
|
||||||
|
builder.clear();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <N extends Node> void setSpansForNode(@NonNull N node, int start) {
|
public <N extends Node> void setSpansForNode(@NonNull N node, int start) {
|
||||||
setSpans(start, configuration.spansFactory().require(node).getSpans(configuration, renderProps));
|
setSpans(start, configuration.spansFactory().require(node).getSpans(configuration, renderProps));
|
||||||
|
@ -325,6 +325,14 @@ public class SpannableBuilder implements Appendable, CharSequence {
|
|||||||
return reversed;
|
return reversed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @since 3.0.0
|
||||||
|
*/
|
||||||
|
public void clear() {
|
||||||
|
builder.setLength(0);
|
||||||
|
spans.clear();
|
||||||
|
}
|
||||||
|
|
||||||
private void copySpans(final int index, @Nullable CharSequence cs) {
|
private void copySpans(final int index, @Nullable CharSequence cs) {
|
||||||
|
|
||||||
// we must identify already reversed Spanned...
|
// we must identify already reversed Spanned...
|
||||||
|
Loading…
x
Reference in New Issue
Block a user